Blocket.se Car Listings Extractor
Pricing
Pay per usage
Blocket.se Car Listings Extractor
Pricing
Pay per usage
Rating
0.0
(0)
Developer
steeriq
Maintained by CommunityActor 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
- Open blocket.se and build a car search with the site's own filters: make, model, price, year, fuel, region, and so on.
- Copy the URL from your browser's address bar.
- 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:
| URL | Example |
|---|---|
| Search results | https://www.blocket.se/mobility/search/car?variant=1.749.2132 |
| A make or model page | https://www.blocket.se/mobility/discover/cars/bmw/3-serie |
| A dealer's stock | https://www.blocket.se/mobility/dealer/547773/bilhuset-i-kalmar-ab |
| One listing | https://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
| Field | Default | What it does |
|---|---|---|
startUrls | (required) | Search, make or model, dealer and listing URLs. |
detailLevel | full | full opens every listing page for the complete record. compact returns only what the search results show, about 50 listings per request. |
maxItems | no limit | Stop after this many listings. |
includeEquipment | false | Add the equipment list, in Swedish, as published. |
includeRawParameters | false | Add every other parameter from the listing page, as the site published it. |
skipSeenListings | false | Skip listings that an earlier run already returned. |
seenStoreName | blocket-se-seen-listings | The named key-value store that remembers seen listings. |
maxConcurrency | 10 | Most requests in flight at once. |
maxRequestRetries | 3 | Retries per request. |
proxyConfiguration | none | Leave 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 underunmapped, for example{ "fuelType": "…" }. nullmeans the site did not publish that value.priceis the full purchase price in Swedish kronor, including VAT.priceExVatis the price before VAT, when a company seller publishes one.- Leasing. A monthly payment is never given as
price:- A leasing offer has
price: nullandpriceExVat: null, andconditionnull: 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.
- A leasing offer has
mileageKmis converted from the Swedish mil the site publishes: one mil is 10 km.engineCapacityCcis converted from the litres the site publishes, to two decimals:1,99 Lis 1990 cm³.powerKwis converted from metric horsepower (hk).vinis the full 17 characters, when the seller publishes it.publishTimeis alwaysnull: the site shows only when a listing was last updated.seller.typeisbusinessfor a dealer, named with its page on the site, andprivatefor a private seller, who is never named.extractionTimeis 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
compactwhen the search result fields are enough. - Set
maxItemswhile you are testing. - Use
skipSeenListingsfor 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.