Blocket.se Car Listings Extractor avatar

Blocket.se Car Listings Extractor

Pricing

Pay per usage

Go to Apify Store
Blocket.se Car Listings Extractor

Blocket.se Car Listings Extractor

Pricing

Pay per usage

Rating

0.0

(0)

Developer

steeriq

steeriq

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Extracts car listings from blocket.se, the Swedish marketplace. You paste search, dealer or listing URLs, and it returns every matching listing as clean, structured JSON: price, make, model, year, mileage, fuel, gearbox, body, power, battery and range, location, seller, photos, VIN and more.

The output uses one normalised shape that is shared with our other car marketplace extractors, so you can combine data from several countries without writing a mapping layer.

What it covers

  • Passenger cars, SUVs and family vans
  • Light commercial vehicles listed among cars: vans and pick-ups

Other categories are skipped, including motorcycles, A-tractors, trucks, caravans, boats and everything outside vehicles.

How to use it

  1. Open blocket.se and build a car search with the site's own filters: make, model, price, year, fuel, region, and so on.
  2. Copy the URL from your browser's address bar.
  3. Paste it into Start URLs and run the actor.

Every result of that search is returned. A single listing URL returns just that listing. You can mix as many URLs as you like; the results are de-duplicated.

The actor accepts:

URLExample
Search resultshttps://www.blocket.se/mobility/search/car?variant=1.749.2132
A make or model pagehttps://www.blocket.se/mobility/discover/cars/bmw/3-serie
A dealer's stockhttps://www.blocket.se/mobility/dealer/547773/bilhuset-i-kalmar-ab
One listinghttps://www.blocket.se/mobility/item/27268814

A make or model page returns the same results as the search it links to. A dealer URL returns the dealer's cars.

Old Blocket URLs (/bilar/…, /annonser/…, /annons/…) are rejected: the site now redirects them to far broader searches than the ones they named, so build the search again on the current site.

Input

FieldDefaultWhat it does
startUrls(required)Search, make or model, dealer and listing URLs.
detailLevelfullfull opens every listing page for the complete record. compact returns only what the search results show, about 50 listings per request.
maxItemsno limitStop after this many listings.
includeEquipmentfalseAdd the equipment list, in Swedish, as published.
includeRawParametersfalseAdd every other parameter from the listing page, as the site published it.
skipSeenListingsfalseSkip listings that an earlier run already returned.
seenStoreNameblocket-se-seen-listingsThe named key-value store that remembers seen listings.
maxConcurrency10Most requests in flight at once.
maxRequestRetries3Retries per request.
proxyConfigurationnoneLeave it empty and the actor uses a proxy only if the site blocks it.

Example input:

{
"startUrls": ["https://www.blocket.se/mobility/search/car?variant=1.749.2132"],
"maxItems": 100
}

Tracking new listings

To collect only new listings on a schedule, turn on skipSeenListings and run the same searches daily. Listings that an earlier run returned are skipped before they are requested, so you don't pay for them again. Use a different seenStoreName for each independent feed.

Output

Each dataset item is one listing. Here is an example at full detail, with the photo list and description shortened:

{
"marketplace": "blocket-se",
"id": "27268814",
"url": "https://www.blocket.se/mobility/item/27268814",
"title": "BMW 330e",
"variant": "Touring Steptronic M-Sport *El-Drag *Kamera *ACC",
"make": "bmw",
"model": "330e",
"price": 259900,
"priceDerived": false,
"priceExVat": null,
"currency": "SEK",
"year": 2021,
"firstRegistration": "2020-10-01",
"mileageKm": 160500,
"fuelType": "plugin_hybrid_petrol",
"bodyType": "wagon",
"gearbox": "automatic",
"drivetrain": "rear_wheel",
"doors": 5,
"seats": 5,
"weightKg": 1905,
"towingCapacityKg": 1500,
"engineCapacityCc": 1990,
"powerKw": 215,
"batteryCapacityKwh": 12,
"electricRangeKm": 56,
"color": "grey",
"condition": "used",
"vin": "WBA6N3103MFK12581",
"co2Gkm": 36,
"euroStandard": null,
"consumption": {
"fuelL100km": null,
"electricKwh100km": { "city": null, "highway": null, "combined": 16.2 }
},
"technicalInspectionUntil": "2026-10-31",
"hasServiceHistory": null,
"location": {
"raw": "Trångsundsvägen 4, 39239 Kalmar",
"city": "Kalmar",
"region": null,
"postalCode": "39239",
"countryCode": "SE",
"latitude": null,
"longitude": null
},
"seller": {
"type": "business",
"typeInferred": false,
"name": "Bilhuset i Kalmar AB",
"memberSince": null,
"activeListingCount": 150,
"profileUrl": "https://www.blocket.se/mobility/dealer/547773/bilhuset-i-kalmar-ab",
"websiteUrl": "http://www.bilhusetkalmar.se",
"address": {
"raw": "Trångsundsvägen 4, 392 39 KALMAR",
"city": "KALMAR",
"region": null,
"postalCode": "39239",
"countryCode": "SE",
"latitude": null,
"longitude": null
}
},
"imageUrls": ["https://images.blocketcdn.se/dynamic/default/item/27268814/…"],
"imageCount": 17,
"status": "active",
"description": "BMW 330e Touring Steptronic, M-Sport, 292hk, 2021…",
"publishTime": null,
"extractionTime": "2026-10-09T15:20:11.482Z",
"startUrl": "https://www.blocket.se/mobility/search/car?variant=1.749.2132"
}

At compact detail you get the fields from id to status: the ones the search results show. They show no body type, engine, power or battery, so those are null there, and a range only for electric and plug-in hybrid cars. The seller there has only its type and, for a dealer, its name.

How to read the fields

  • Normalised values. Make, fuel, body, gearbox, drivetrain, colour and condition use fixed lowercase values (diesel, suv, automatic), whatever label the site used. If the site publishes a value outside that list, the field is "unidentified" and the original label is kept under unmapped, for example { "fuelType": "…" }.
  • null means the site did not publish that value.
  • price is the full purchase price in Swedish kronor, including VAT. priceExVat is the price before VAT, when a company seller publishes one.
  • Leasing. A monthly payment is never given as price:
    • A leasing offer has price: null and priceExVat: null, and condition null: its amount is a monthly payment, not a purchase price.
    • So does a price under 20 000 kr whose title or specification speaks of leasing (Privatleasing, BUSINESS LEASE, kr/mån, :-/Mån): sellers list leases under other sales forms too.
    • A car sold outright that also advertises leasing keeps its price.
    • A lease taken over and priced monthly, with no such words, can still come through with its monthly figure as price.
  • mileageKm is converted from the Swedish mil the site publishes: one mil is 10 km.
  • engineCapacityCc is converted from the litres the site publishes, to two decimals: 1,99 L is 1990 cm³.
  • powerKw is converted from metric horsepower (hk).
  • vin is the full 17 characters, when the seller publishes it.
  • publishTime is always null: the site shows only when a listing was last updated.
  • seller.type is business for a dealer, named with its page on the site, and private for a private seller, who is never named.
  • extractionTime is when the page was read. Price, mileage and status are as of that moment.
  • Removed listings. A listing URL whose ad was removed, sold or withdrawn returns an item with "status": "removed", so you can tell it apart from a failed request. The site does not say which of the three it was.

The registration number is never collected.

Run summary

Each run also saves a RUN_SUMMARY record in its key-value store. It shows the outcome of every start URL (ok, truncated, rejected or failed), and any requests that failed. The same summary appears as the run's status message.

truncated means the search had more results than the site lets anyone page through: at most 2,500 per search, 50 pages of 50. To get all of them, split the search into narrower ones, for example by model, year or price range.

Cost and speed

Searches are read from the site's own search data, about 50 listings per request, and listing pages as plain HTML. The actor uses no browser and, by default, no proxy, so runs are fast and cheap. A proxy is added automatically, first datacenter and then residential, only if the site starts blocking requests.

To keep costs down:

  • Use compact when the search result fields are enough.
  • Set maxItems while you are testing.
  • Use skipSeenListings for scheduled runs.

Limits

  • Only public listings are extracted. Nothing that requires a login.
  • Seller phone numbers are not collected.
  • Descriptions and equipment are returned as the seller wrote them, usually in Swedish.