Booli Scraper | Sweden Till salu & Slutpriser
Pricing
from $2.20 / 1,000 results
Booli Scraper | Sweden Till salu & Slutpriser
Scrape Booli.se Sweden property data — till salu (for sale), slutpriser (sold prices), nyproduktion, mäklare agents, agencies & BRF. Filter by area, price, rooms & living area. Export Excel/CSV/JSON as a Booli API alternative.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
3
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape Booli.se Sweden property listings — till salu (for sale), slutpriser (sold prices), nyproduktion, mäklare agents, agencies, and BRF — then download structured data as Excel, CSV, or JSON.
This Actor is a practical Booli API alternative for researchers, agencies, investors, and automations that need clean Swedish housing data from Booli.se. Enter area IDs or a location slug, pick a channel, optionally enrich listing / BRF detail pages, and export Dataset rows with prices, addresses, listing IDs, agent slugs, and direct Booli URLs.
Architecture: thin Apify Actor + booli-se Cloud Run worker. Residential egress is owned by the worker (
WORKER_PROVIDES_PROXY=1). UpdateWORKER_BASE_URL/WORKER_API_KEYin Actor env if the worker host changes — no code change required.
What does the Booli Scraper do?
Booli Scraper lets you extract structured Sweden real-estate data from Booli without maintaining your own browser farm. Give it areas and a channel (or detail URLs for agencies / BRF), then start a run.
Under the hood, the Actor:
- Validates input (channel, areaIds / location / areaSlug, filters, detailUrls)
- Calls a managed Cloud Run worker that fetches Booli pages (Patchright + residential SE egress)
- Parses guest-visible listing / agent / BRF surfaces into normalized records
- Dedupes across multiple
areaIdsand pushes Dataset rows with preview fields - Writes
RUN_SUMMARY(andERROR_SUMMARYon failure) to the key-value store
You run it like any other Apify Actor — schedule it, call it from the API, or plug it into Make / n8n / Zapier.
Channels
| Channel | What you scrape | Discovery |
|---|---|---|
till-salu (sale) | Homes for sale | areaIds / location SERP |
slutpriser (sold) | Sold prices (slutpriser) | areaIds / location SERP |
nyproduktion (projects) | New construction projects | areaIds / location SERP |
maklare (agents) | Mäklare (agent) profiles | /sok/maklare/{areaSlug} |
maklarbyra | Real-estate agencies | detailUrls required |
brf | Housing cooperatives (BRF) | detailUrls required |
What Booli data can I extract?
| Field | Example |
|---|---|
| Listing ID / Booli ID | 47201, listing URL on booli.se |
| Channel | till-salu, slutpriser, nyproduktion, maklare, brf, … |
| Address / area | Street address, descriptive area name |
| Price | List or sold price display (SEK) |
| Object type / tenure | e.g. Lägenhet, Villa; Bostadsrätt, Äganderätt |
| Agent / agency | agentSlug, agency name |
| BRF / housing coop | housingCoopId / BRF profile URL |
| Images | Gallery URLs (capped by imageLimit) |
| Detail extras | When enrichDetails / enrichHousingCoop is on |
Features
- Scrape Booli till salu and slutpriser for Sweden market research
- Cover nyproduktion, mäklare, mäklarbyrå, and BRF channels
- Multi
areaIds(one worker call per area, then dedupe by id) - Resolve
location/areaSlugon the worker (e.g.stockholm,goteborg) - Filters:
objectType,tenureForm, list/sold price, rooms, living/plot area, construction year, sold date,isNewConstruction, sort - Optional
enrichDetails(open LDP / agent profile) andenrichHousingCoop(follow BRF) - Cap runs with
maxResults(schema max 500) andmaxPages - Export Excel / CSV / JSON; connect Make, n8n, Zapier, Python, or the Apify API
- Pay per event — Actor start + each Dataset result; platform compute for this Actor is paid by the developer
Why scrape Booli / Sweden property listings?
Booli is one of the most used Swedish property portals for for-sale inventory and sold-price history. Scraping Booli helps with:
- Market research and price benchmarking across Stockholm, Göteborg, Malmö, and other län
- Investment screening with slutpriser sold comps alongside active till-salu listings
- Lead generation for agencies, movers, and service providers via mäklare / agency coverage
- Monitoring new listings, price changes, nyproduktion supply, and BRF context
- Feeding dashboards, CRMs, spreadsheets, or AI agent workflows
Competing Booli scrapers often focus on search cards only, or bill platform usage separately. This Actor covers sale + sold + projects + agents + BRF, with clear PPE pricing and developer-paid platform usage.
Pricing
Pay per event. You pay for Actor start + each result written to the default dataset. Platform compute usage for this Actor is paid by the developer (User pays platform usage costs = No).
| Event | Price |
|---|---|
Actor Start (apify-actor-start) | $0.005 per start (per GB memory, min 1) |
result (apify-default-dataset-item) | $3.00 / 1,000 on FREE & BRONZE (see tiers) |
| Apify Store tier | $/1,000 results | per result |
|---|---|---|
| FREE* | $3.00 | $0.003 |
| BRONZE | $3.00 | $0.003 |
| SILVER | $2.60 | $0.0026 |
| GOLD | $2.20 | $0.0022 |
| PLATINUM | $2.00 | $0.002 |
| DIAMOND | $1.60 | $0.0016 |
*Store tier discounts apply to paying Apify customers on higher tiers. Keep maxResults low while testing.
Example: 1 start + 1,000 listing rows ≈ $0.005 + $3.00 in event charges on FREE/BRONZE.
More Actors like this
Looking for another property portal, or a scraper outside real estate? Use a specialized Actor when one exists — structured fields, better coverage, usually lower cost. Use this Actor for Booli.se Sweden listings, sold prices, agents, and BRF.
Similar real estate Actors
- FINN.no Scraper
- Funda Scraper
- Idealista Scraper
- ImmoScout24 Scraper
- Rightmove Scraper
- SeLoger Scraper
- Immobiliare.it Scraper
- Otodom Scraper
- Daft.ie Scraper
- Hepsiemlak Scraper
- Zillow & Zumper Scraper
- Realtor.com Scraper
- realestate.com.au Scraper
- Realtor.ca Scraper
Prefer another specialized scraper?
Jobs & Freelance
- LinkedIn Jobs Scraper
- Indeed Jobs Scraper
- Upwork Jobs Scraper
- Glassdoor Scraper
- Fiverr Gigs Scraper
- Bayt Jobs Scraper
E-commerce
- Walmart Product Scraper
- Amazon Search Scraper
- Shopee Search Scraper
- Etsy Scraper
- SHEIN Product Scraper
- Temu Product Scraper
- Target Product Scraper
- Allegro Scraper
Travel & Stays
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.
How to scrape Booli property data
- Open this Actor and click Try for free (or Start).
- Set
areaIds(default[2]= Stockholms län) orlocation/areaSlug(e.g.stockholm). - Choose
channel:till-salu,slutpriser,nyproduktion, ormaklare. - For
maklarbyra/brf, paste BoolidetailUrlsinstead of relying on SERP alone. - Set
maxResultsandmaxPageslow for a first test (e.g. 5–15 results, 1 page). - Optionally enable
enrichDetails/enrichHousingCoopwhen you need deeper fields. - Prefer Apify RESIDENTIAL proxy with country SE when the Actor mints proxy (ignored if
WORKER_PROVIDES_PROXY=1). - Click Start, then download the Dataset as JSON, CSV, Excel, or JSONL.
Example input (till salu in Stockholms län)
{"areaIds": [2],"channel": "till-salu","objectType": "Lägenhet","maxListPrice": 3000000,"maxResults": 15,"maxPages": 1,"enrichDetails": false}
Example input (slutpriser via location)
{"location": "goteborg","channel": "slutpriser","maxResults": 20,"maxPages": 1,"sort": "soldDate","ascending": false}
Example input (mäklare search)
{"areaSlug": "stockholm","channel": "maklare","maxResults": 25,"maxPages": 1}
Example input (BRF detail URLs)
{"channel": "brf","detailUrls": ["https://www.booli.se/bostadsrattsforening/47201"],"maxResults": 5}
Input
Use the Input tab for the full form. Core fields:
| Field | Description |
|---|---|
areaIds | Booli area IDs (default [2] Stockholms län). Multiple → one call each, then dedupe |
location / areaSlug | Area name/slug resolved by the worker |
channel | till-salu, slutpriser, nyproduktion, maklare, maklarbyra, brf (aliases: sale/sold/projects/agents) |
objectType / tenureForm | e.g. Lägenhet, Villa; Bostadsrätt, Äganderätt |
minListPrice / maxListPrice | SEK filters for till-salu |
minSoldPrice / maxSoldPrice | SEK filters for slutpriser |
minRooms / maxRooms / living & plot area / construction year / sold date | Optional SERP filters |
maxResults | Maximum records to emit (1–500) |
maxPages | Maximum SERP pages |
detailUrls | /annons/, /bostad/, /maklare/, /maklarbyra/, /bostadsrattsforening/ URLs |
enrichDetails | Open each SERP card LDP / agent profile |
enrichHousingCoop | Follow listing housingCoop → BRF page |
imageLimit | Max images per listing (0–20) |
proxyConfiguration | Prefer RESIDENTIAL + SE when Actor mints proxy |
workerBaseUrl | Optional per-run worker origin override |
Output example
Each Dataset item is one Booli listing, agent, agency, or BRF row. Download as JSON, CSV, Excel, or JSONL.
{"name": "Example street 12","type": "listing","status": "for_sale","country": "SE","authority": "booli.se","channel": "till-salu","listingId": "1234567","listingUrl": "https://www.booli.se/annons/1234567","descriptiveAreaName": "Södermalm, Stockholm","priceDisplay": "4 950 000 kr","source": "booli.se","brand": "booli"}
Key-value store helpers:
OUTPUT/RUN_SUMMARY— counts, channel, area calls, warningsERROR_SUMMARY— present when a run fails
Lead & contact fields
Every Dataset row carries the full lead/clue key set so records are outreach-ready. The keys follow the mission lead schema (phones / emails / address / geo / person / org / web / leadSource / leadReveal / leadAbsences).
Booli.se's contact distribution differs by surface: search cards have no contact info (recon-confirmed), listing detail pages (LDP) show agent name and address but hide phone/email behind a "Kontakta mäklaren" click-show overlay, and agent profile pages (/maklare/{slug}) expose phone and email already-visible (plain text + tel: / mailto:). The worker follows agent profile pages when enrichDetails is on (default) to harvest full contact without spending click-reveal budget.
| Field | Type | Meaning & source surface |
|---|---|---|
phones | [{value, type, e164?}] | Agent mobile/landline from /maklare/{slug} pageProps.agent.phone (already-visible). Sample: 0737-500 100 (mobile, Jonas Lindström / Notar). Empty on SRP cards (本站无) and on LDP items where the agent follow was not executed (未验证). |
emails | [{value, type}] | Agent work email from /maklare/{slug} pageProps.agent.email (already-visible). Sample: jonas.lindstrom@notar.se. Empty on SRP cards (本站无) and on LDP items where the agent follow was not executed (未验证). |
address | {street, unit, locality, region, postalCode, country, full} | Listing address from LDP Apollo streetAddress + apartmentNumber. unit = 门牌 (Swedish lägenhetsnummer, e.g. 1002, 1402). street embeds street name + house number (e.g. Bäckebolslyckan 29, Oktavgatan 4). postalCode from JSON-LD PostalAddress. country = SE. Agent items may carry office street from agent.offices[]. |
geo | {lat, lng} | Coordinates from Apollo Listing latitude / longitude (already-visible). Sample: 57.75256339, 11.98650358. Agent items: 未验证 when agent page has no office coordinates. |
person | {name, role?} | Agent name from LDP "Ansvarig mäklare" or agent profile pageProps.agent.name. Sample: Jonas Lindström (role: agent). Empty on SRP cards (本站无). |
org | {name, id?} | Agency name and Booli agency ID from Apollo agency.name / agencyId. Sample: Notar (id: 47), Länsförsäkringar Fastighetsförmedling (id: 20). |
web | {website, socials[]} | Per-entity website and social links. Booli.se has no per-listing or per-agent social links (only platform-level Instagram/Facebook). website is null, socials is [] on all items. |
leadSource | enum | search = SRP card only; detail = LDP item; entity = agent profile / agency / BRF item. |
leadReveal | enum | visible = contact already-visible on the fetched page (agent profile, LDP address). click = contact behind "Kontakta mäklaren" overlay (LDP phone/email, not executed by worker). absent = no contact on this surface (BRF, agency page). |
leadAbsences | object/map | Per-subfield reason when a lead is empty: 本站无 (recon-confirmed the surface does not publish it — SRP card phones/emails/person, per-entity web/socials, BRF contacts), 未验证 (contact IS available on the site via click-show or agent follow, but the worker did not execute that path for this item), or 闸门锁 (gated by login/contact form — not applicable to Booli phone/email which are click-show, not login-gated). |
A null / empty lead value is always paired with a matching leadAbsences reason — the key is never silently omitted.
Absence semantics (ruling-B compliance):
- SRP search cards:
phones,emails,person=本站无(recon confirmed no contact on cards). - LDP items without agent follow:
phones,emails=未验证(recon verified contact exists on LDP via click-show overlay and on agent page; the worker did not execute the reveal for this item). - LDP items with agent follow (
enrichDetails):phones,emails= actual values,leadSource=entity,leadReveal=visible. - All items:
web.socials=本站无(no per-entity socials on Booli.se).
Reveal cost
Booli.se listing detail pages (LDP) show agent name and property address already-visible, but phone and email are behind a "Kontakta mäklaren" click-show overlay that triggers a GraphQL operationName=Agent XHR. The worker does not click this overlay.
Instead, when enrichDetails is on (default), the worker follows the agent profile page (/maklare/{slug}) where phone and email are already-visible in pageProps.agent (plain text + tel: / mailto:) — no click-reveal needed. This is the preferred lead channel.
Cost implications:
- Each enriched listing requires one extra HTTP fetch (the agent profile page) in addition to the LDP.
- Runs with
enrichDetails=truetake longer per result than SRP-only runs. - The worker uses Patchright + residential SE egress to bypass Cloudflare (non-browser HTTP gets 403 challenge on all Booli.se surfaces).
- There is no per-site click-reveal budget to spend — the agent page approach avoids clicking entirely.
- Submitting the contact form is prohibited (GDPR / site terms); the Actor never fills or submits it.
Honest limitations
These match the 2026-08-24 Booli.se recon report and the cloud smoke Dataset (leadAbsences):
- SRP cards have no contact info. Search results show address, agency name, and listing metadata only — no phone, email, or agent personal name. SRP-only items set
leadAbsences.phones=本站无,leadAbsences.emails=本站无,leadAbsences.person=本站无. - Per-listing email is click-show gated (not login-gated). The LDP "Kontakta mäklaren" overlay reveals agent phone and email via a GraphQL XHR. The worker does not click this overlay. When the agent profile page is followed (
enrichDetails), phone/email are already-visible there. LDP items where the agent follow was not executed setleadAbsences.phones=未验证,leadAbsences.emails=未验证. - Per-entity web / socials are 本站无. Booli.se has no per-listing or per-agent website or social media links (only platform-level Instagram/Facebook). All items emit
web.website=null,web.socials=[],leadAbsences.web_socials=本站无. - BRF (housing cooperative) pages have no association contacts. The BRF page explicitly states "Vi har inte några kontaktuppgifter till bostadsrättföreningen." BRF items set
leadAbsences.phones=本站无,leadAbsences.emails=本站无,leadAbsences.person=本站无. - Agency pages (
/maklarbyra/{slug}) list agent names but no phone/email/address. Only the office page (/maklarkontor/{slug}) has office phone/email/street, but the worker URL helper does not support that path. Agency items setleadAbsences.phones=本站无,leadAbsences.emails=本站无,leadAbsences.address=本站无. - No independent rental portal. Booli.se has no
hyresrättrental channel;Hyresrättis only a tenure filter on sale listings. Rent channel =本站无. - Nyproduktion project pages (
/projekt/{id}) have no phone/email. Developer external links (e.g. Besqab) may exist but are not per-listing contact. The worker URL helper does not normalize/projekt/— nyproduktion is scraped via search cards +enrichDetails. - Cloudflare 403 on all non-browser HTTP. The worker requires Patchright (headed Chrome + Xvfb) + residential SE proxy. curl_cffi / naked HTTP gets 403 challenge on every Booli.se URL.
Do not infer contacts that Booli.se does not publish: where a lead is absent, the item says so in leadAbsences rather than fabricating a value.
Tips for better Booli scraping results
- Start with
maxPages: 1andmaxResults: 5–15to validate filters. - Prefer known
areaIdswhen you need reproducible coverage; uselocationfor quick tests. - Enable
enrichDetailsonly when you need LDP / agent depth — it costs more time per row. - Use
slutpriserfor sold comps; keep till-salu and sold as separate runs if you need both. - For agencies / BRF, pass explicit
detailUrls— those channels are not SERP-driven. - Split large multi-län jobs into several runs with smaller
areaIdsbatches.
FAQ
Is there an official Booli API?
Booli has historically offered partner APIs with limited access. This Actor provides a Booli scraper / API-style Dataset export for guest-visible public pages — no Booli API key required.
Can I scrape both till salu and slutpriser?
Yes. Run once with channel=till-salu and once with channel=slutpriser (or use aliases sale / sold). Combine Datasets downstream if you need a single table.
Does it scrape listing detail pages?
Yes, when enrichDetails is enabled. enrichHousingCoop follows BRF links from listings when present.
What format can I export?
Apify Dataset downloads support JSON, JSONL, CSV, Excel, XML, and RSS. You can also pull results through the Apify API, Integrations, or webhooks.
Is it legal to scrape Booli?
Only scrape publicly available listing data and only if you have a legitimate reason. Personal data may appear in public listings and can be protected by GDPR. Review Booli terms and your own compliance obligations before large-scale collection. This tool is intended for ethical use of public information. Do not submit contact forms automatically.
How do I run this Booli Scraper via API?
Use the Apify API, CLI (apify call), or Schedules. Pass the same JSON input shown above. See the API tab on this Actor page for ready-made code snippets.
Actor ID: lentic_clockss/booli-scraper
curl "https://api.apify.com/v2/acts/lentic_clockss~booli-scraper/runs" \-X POST \-H "Authorization: Bearer YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"areaIds":[2],"channel":"till-salu","maxResults":10,"maxPages":1}'
Live View / standby endpoints
When the Actor runs in standby / Live View mode, these operational endpoints are available:
| Method | Path | Description |
|---|---|---|
GET | / | Service info |
GET | /health | Health check |
GET | /input-example | Low-cost sample input |
GET | /openapi.json | Deployed OpenAPI document |
Normal scraping still runs as a standard Actor run (not through these endpoints).
Support
Open the Issues tab on this Actor page with sample input, run ID, and expected vs actual results. Feature requests for extra filters or fields are welcome.
Related Actors
All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Bayt Jobs Scraper
- Fiverr Gigs Scraper
- Freelancer.com Scraper
- Glassdoor Scraper
- Himalayas Jobs Scraper
- Indeed Jobs Scraper
- Jobicy Remote Jobs Scraper
- RemoteOK Jobs Scraper
- SEEK Jobs Scraper
- Upwork Jobs Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- 99.co Scraper
- Realtor.com Agents Scraper
- Apartments.com Rental Scraper
- Bayut Scraper
- Craigslist Housing Scraper
- Daft.ie Scraper
- Dot Property Scraper
- FINN.no Scraper
- Funda Scraper
- Hepsiemlak Scraper
- Idealista Scraper
- Immobiliare.it Scraper
- ImmoScout24 Scraper
- Naver Land Scraper
- OpenSooq Scraper
- Otodom Scraper
- Property Finder Scraper
- PropertyGuru Scraper
- realestate.com.au Scraper
- Realtor.ca Scraper
- Rightmove Scraper
- SeLoger Scraper
- SUUMO Scraper
- Zillow Group Scraper
E-commerce
- Shopee Search Scraper
- E-commerce Scraper
- 1688 Global Product Search Scraper
- Allegro Scraper
- Amazon Search Scraper
- ASOS Product Scraper
- Cdiscount Product Scraper
- Costco Product Scraper
- Coupang Product Scraper
- Etsy Scraper
- Lazada Scraper
- MercadoLibre Scraper
- Mercari Japan Scraper
- Rakuten Japan Scraper
- SHEIN Product Scraper
- Target Product Scraper
- Temu Product Scraper
- Walmart Product Scraper
Travel & Stays
- Booking.com & Airbnb Scraper
- Agoda Scraper
- Airbnb Listings Scraper
- Booking.com Hotels Scraper
- Despegar Scraper
- Expedia Scraper
- Traveloka Scraper
- Travelstart Flights Scraper
- Trip.com Scraper
- TripAdvisor Scraper
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ Browse the full profile: apify.com/lentic_clockss