Bolagsplatsen Scraper – Swedish Businesses for Sale avatar

Bolagsplatsen Scraper – Swedish Businesses for Sale

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Bolagsplatsen Scraper – Swedish Businesses for Sale

Bolagsplatsen Scraper – Swedish Businesses for Sale

Scrape business-for-sale listings (företag till salu) from Bolagsplatsen.se, the Swedish marketplace for buying and selling companies. Get asking price, turnover, profit status, employees, industry, location, broker and more as clean JSON/CSV/Excel.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Andreas v

Andreas v

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Categories

Security

Limited permissions

Share

Bolagsplatsen Scraper – Swedish businesses for sale (företag till salu)

Scrape business-for-sale listings from Bolagsplatsen.se, a Swedish marketplace for buying and selling companies (företag till salu, bolag till salu, verksamhet till salu). The Actor returns one structured record per listing: asking price (prisidé), turnover (omsättning), profit/loss status (resultat), number of employees, year founded, industry, municipality and county (län), broker, images and more. You can export the results as JSON, CSV, Excel or via API.

  • ✅ Finds every listing through the site's public sitemap, with no search pagination
  • ✅ Clean numeric fields: "1,995 Mkr" becomes 1995000 and "0-2 Mkr" becomes min 0 / max 2000000
  • ✅ Filters: category/industry, location, keyword, asking-price and turnover ranges, broker vs. owner
  • ✅ Only new listings mode for scheduled monitoring (daily alerts on new companies for sale)
  • ✅ Optionally includes sold listings (sålda bolag) with sale date, which is useful for valuation benchmarks
  • ✅ Polite and lightweight: plain HTTP (no browser), no proxy needed, respects robots.txt

What data can you get?

FieldExampleNotes
url, listingId…/foretag-till-salu/…-91593, "91593"
status, soldDate"active" / "sold", "2026-05-16"Sold listings are skipped unless includeSold is on
title, descriptionFull description text with line breaks (active listings)
category, industries"Mat & dryck", ["Restaurang", "Mat & dryck"]Main category (breadcrumb) + all industry tags
locationRaw, district, municipality, county, region, locations"Södertälje - Stockholm" → municipality Södertälje, county Stockholmregion for broad areas like "Norrland" or "Sverige"; all places when several are listed
askingPriceRaw, askingPrice, askingPriceMin, askingPriceMax, askingPriceIsRange"1,2 Mkr" → 1200000SEK; ranges ("2-5 Mkr") give min/max
turnoverRaw, turnover, turnoverMin, turnoverMax, turnoverIsRange"8,3 Mkr" → 8300000Yearly turnover, SEK
resultRaw, profitStatus"Vinst" → "profit"The site shows profit/loss status, not an amount
employeesRaw, employees, employeesMin, employeesMax"2-10 st" → 2 / 10
yearFounded2005
premisesAreaSqm, rentPerMonthSek100, 35688When shown (retail, restaurants, etc.)
movable, ownsProperty, generationTransfer, liquorLicensetrueYes/no facts shown on some listings
seatsIndoor, seatsOutdoor, openingHours, otherFactsRestaurant/retail specifics; any other facts end up in otherFacts
advertiserType"broker" / "owner"Business broker (mäklare) or the owner (ägaren själv)
brokerName, brokerCompany, brokerProfileUrl"Bra Objekt"Only for broker listings; publicly shown business contact info only
images["https://www.bolagsplatsen.se/media/objects/images/…webp"]Main listing image
isPopularfalse"Mycket populär annons" badge
lastModified"2026-09-28"Last-modified date from the site's sitemap (for sold listings, this is the sale date)
scrapedAtISO timestamp

How to use it

  1. Click Try for free / Start.
  2. Set Max listings (0 = all) and any filters.
  3. Run it, then download the dataset as JSON/CSV/Excel or read it through the API.

Input example

{
"maxItems": 200,
"categories": ["Restaurang", "Café"],
"locations": ["Stockholm", "Uppsala"],
"maxAskingPrice": 3000000,
"includeListingsWithoutPrice": false,
"modifiedSince": "30 days"
}

Monitor new listings every day (use with an Apify Schedule):

{ "maxItems": 0, "skipPreviouslyScraped": true, "modifiedSince": "7 days" }

Scrape specific listings:

{ "startUrls": [{ "url": "https://www.bolagsplatsen.se/foretag-till-salu/pub-bar-pa-centralt-lage-sodertalje-85643" }] }

Input options

OptionDefaultDescription
maxItems100Max listings to save (after filters). Newest first. 0 = no limit
startUrls–Specific listing URLs. If empty, all listings come from the sitemap
includeSoldfalseAlso return sold listings
modifiedSince–YYYY-MM-DD or relative (7 days, 2 weeks, 1 month), based on the sitemap last-modified date. Filtered before fetching, so it is fast and cheap
skipPreviouslyScrapedfalseSkip listings saved in earlier runs (stored in the named key-value store bolagsplatsen-scraper-seen, key seenListingsKey)
categories, locations, keywords–Case-insensitive "contains" filters (any of the words)
minAskingPrice, maxAskingPrice, minTurnover, maxTurnover–SEK. Ranges match if they overlap
includeListingsWithoutPricetrueWhen a price/turnover filter is set, keep listings that don't show that value
advertiserTypeanyany, broker or owner
proxyConfigurationoffNot needed; available if you ever get blocked
maxConcurrency, maxRequestsPerMinute, delayBetweenRequestsSecs3, 60, 1Politeness settings

Filters other than modifiedSince/skipPreviouslyScraped are applied after each page is downloaded, because the site's filtered search pages are disallowed in robots.txt. You pay only for listings that are saved. A very narrow filter just takes longer to run.

Output example

A real record, shortened (description truncated, broker name replaced):

{
"url": "https://www.bolagsplatsen.se/foretag-till-salu/grill-sallad-glass-i-centrala-malmo-91253",
"listingId": "91253",
"listingType": "Företag till salu",
"status": "active",
"soldDate": null,
"title": "Grill & Sallad & Glass i centrala Malmö",
"description": "Grill & Sallad är en restaurangverksamhet på i centrala Malmö. Verksamheten har ett lättillgängligt snabbmatskoncept med ett varierat utbud av grillrätter, hamburgare, kebab, kyckling, rullar och sallader.\n\nMenyn omfatta…",
"category": "Mat & dryck",
"industries": [
"Gatukök & snabbmat",
"Mat & dryck"
],
"locationRaw": "Malmö - Skåne",
"municipality": "Malmö",
"county": "Skåne",
"district": null,
"region": null,
"locations": [
{
"raw": "Malmö - Skåne",
"district": null,
"municipality": "Malmö",
"county": "Skåne",
"region": null
}
],
"askingPriceRaw": "3,5 Mkr",
"askingPrice": 3500000,
"askingPriceMin": 3500000,
"askingPriceMax": 3500000,
"askingPriceIsRange": false,
"turnoverRaw": "4 Mkr",
"turnover": 4000000,
"turnoverMin": 4000000,
"turnoverMax": 4000000,
"turnoverIsRange": false,
"resultRaw": "Vinst",
"profitStatus": "profit",
"currency": "SEK",
"employeesRaw": null,
"employees": null,
"employeesMin": null,
"employeesMax": null,
"yearFounded": 2009,
"premisesAreaSqm": 78,
"rentPerMonthSek": 16000,
"movable": null,
"ownsProperty": null,
"generationTransfer": null,
"liquorLicense": null,
"seatsIndoor": 12,
"seatsOutdoor": 50,
"openingHours": "10-22",
"otherFacts": null,
"advertiserType": "broker",
"brokerName": "<broker name as shown on the listing>",
"brokerCompany": "Advilia Företagsmäklare",
"brokerProfileUrl": "https://www.bolagsplatsen.se/foretagsmaklare/advilia-foretagsmaklare-988/annonser",
"images": [
"https://www.bolagsplatsen.se/media/objects/images/WhatsApp_Image_20260901_at_082838_4_1788246250-800x500.webp"
],
"isPopular": false,
"lastModified": "2026-09-25",
"scrapedAt": "2026-09-28T20:11:58.862Z"
}

Data coverage (measured)

Full run on 28 Sep 2026: the sitemap listed 2,803 URLs (2,795 unique). 2,791 pages were saved (1,947 active, 844 sold) and 4 were removed/redirected, with 0 failed requests. Share of active listings where each field has a value:

FieldFilledFieldFilled
title, url, listingId, category, lastModified100%description~100% (1 of 1,947 empty on the site)
images~100%advertiserType100%
location (raw)96%county (län)83%
municipality50%turnover (raw, exact or range)80%
profit status (Vinst/Förlust)65%asking price (raw, exact or range)42%
premises area47%rent per month41%
employees36%year founded36%
broker name / company (broker listings only)54% of all active (87% of broker listings)

Empty values mean the seller didn't publish that information. The Actor doesn't guess.

Use cases

  • Acquisition entrepreneurs & search funds: get alerts on new Swedish SMEs for sale that match your criteria.
  • M&A advisors and business brokers: market mapping, competitor broker activity, pricing benchmarks.
  • Valuation & research: turnover vs. asking price by industry and region. Sold listings give extra data points.
  • Lenders, accountants, franchise and real-estate professionals: lead lists of businesses changing hands.
  • Data teams: feed a CRM, Google Sheets, Airtable or a BI dashboard through Apify integrations.

Pricing

This Actor uses pay per event pricing. You pay only for listings that are saved to your dataset:

EventPrice
Listing saved to the dataset$3.00 per 1,000 listings ($0.003 each; lower on higher Apify plans)
Actor start$0.00005 (Apify default)

Platform usage is included. A run over all ~1,950 active listings costs about $6. A daily "only new listings" run usually returns a few dozen listings and costs cents. You can cap spending per run with the Max cost per run setting.

How it works and limitations

  • Listings are found through https://www.bolagsplatsen.se/sitemap_ads.xml and each listing page is fetched as static HTML. The Actor does not call the site's /api/ endpoints and does not use paginated or filtered search URLs (both are disallowed in robots.txt).
  • The site shows rounded figures (e.g. "1 Mkr"). The Actor reports them exactly as displayed and does not guess exact values from the free-text description.
  • Many sellers don't publish an asking price, turnover or employees, so those fields are empty for those listings. See the fill rates above.
  • Active listings don't show a publication date. lastModified comes from the sitemap.
  • Phone numbers and the full image gallery are loaded through the site's /api/, so they are not collected. The main image is included.
  • The sitemap also contains old sold listings and a few removed ones. Removed listings (redirects/404) are skipped and not charged.

This Actor collects publicly available listing information. Bolagsplatsen's robots.txt allows crawling of listing pages. The Actor follows its disallow rules, identifies itself with a descriptive User-Agent and rate-limits itself (1 request/second by default).

Personal data: listings placed by brokers show the broker's name and company, which is business contact information published by the broker. Owner-placed listings don't show a name, and the Actor doesn't try to find one. Names of natural persons are still personal data under the GDPR. If you store or process them, you need a lawful basis (e.g. legitimate interest), must follow data-minimisation and purpose-limitation principles, and must honour data-subject rights. Don't use the data for unsolicited marketing where that is prohibited. You are responsible for how you use the data. If you don't need broker names, just drop the brokerName column. Listing texts and images may be protected by copyright, so don't republish them without permission.

This Actor is not affiliated with or endorsed by Bolagsplatsen.

FAQ

Do I need a proxy? No. The site works with plain HTTP requests. Proxy settings are there only in case that changes.

How long does a full run take? At the default polite rate (1 request/second) a full run of all ~2,800 sitemap URLs took 47 minutes in our test. 100 listings take about 2 minutes. Runs with modifiedSince or skipPreviouslyScraped only fetch new or changed listings, so they are much faster.

Can I get only new listings every day? Yes: schedule the Actor with skipPreviouslyScraped: true.

Something broke or a field is missing? Open an issue on the Actor's Issues tab and include the listing URL.