# Blocket Scraper 🇸🇪 (all-in price per listing) (`tagadanar/blocket-scraper`) Actor

Search Blocket.se, Sweden's biggest classifieds site, and get clean JSON in seconds: price in SEK, city, category, posting date, seller type and photo. One flat price per listing, platform usage included. No API key needed.

- **URL**: https://apify.com/tagadanar/blocket-scraper.md
- **Developed by:** [Tagada Data](https://apify.com/tagadanar) (community)
- **Categories:** E-commerce, Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 listing scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Blocket Scraper: Swedish Marketplace Listings as Clean JSON

Search Blocket.se, Sweden's biggest general classifieds site, the way you would on the site itself, and get the results as structured JSON. Set a search term, a category, a region, a price band in kronor and a sort order as plain input fields. Every record carries the price, the city with coordinates, the posting time, the seller type (private or company) and the photo.

If you already have a Blocket search URL from your browser, paste it as-is instead of using the filters.

### What you get per listing

| Field | Description |
| --- | --- |
| `title` | The listing as the seller wrote it |
| `price`, `currency` | Asking price in SEK. Free listings show `0`, never a fake or missing price |
| `tradeType` | `for-sale`, `free` or `wanted`, straight from the site's own listing type |
| `city`, `latitude`, `longitude` | Where the item is |
| `region` | The county (län) you searched, when you filtered by one |
| `categoryName` | The category you searched, when you filtered by one |
| `brand` | Brand or make, when the listing has one |
| `postedAt` | When the ad went live, as a real ISO timestamp |
| `sellerType`, `sellerName` | Private seller or company, with the company name when it is one |
| `url`, `imageUrl`, `imageCount`, `id` | Listing link, main photo and listing ID |
| `searchQuery`, `scrapedAt` | Which search produced the record and when |

### Who uses it

- Resellers and bargain hunters: run a search sorted newest first on a schedule and see fresh listings before anyone else.
- Price and market analysts: pull a whole category or search term and get asking prices, locations and posting times in one table.
- Cross-border resale and import/export buyers comparing Swedish asking prices against other Nordic or EU markets.
- Anyone who wants a Blocket search as a spreadsheet instead of endless scrolling.

### Input examples

Bikes between 100 and 3,000 SEK in Stockholm county, newest first:

```json
{
  "query": ["cykel"],
  "region": "stockholm",
  "priceFrom": 100,
  "priceTo": 3000,
  "sort": "newest",
  "maxResults": 200
}
````

Two searches at once, capped:

```json
{
  "query": ["iphone 15", "iphone 16"],
  "sort": "newest",
  "maxResults": 100
}
```

Browse a whole category without a search term:

```json
{
  "category": "furniture-interior",
  "region": "skane",
  "sort": "newest",
  "maxResults": 500
}
```

Paste a URL straight from your browser, filters included:

```json
{
  "searchUrls": [
    "https://www.blocket.se/recommerce/forsale/search?q=soffa&location=0.300001"
  ],
  "maxResults": 300
}
```

### How it works

The actor reads the same result data Blocket's own search pages are built from, so runs are fast and records match what a visitor sees. Results are deduplicated by listing ID within a run.

Blocket serves up to 50 pages for one query. If your search holds more results than that, the run tells you so honestly; narrow it with a price band, a category or a region to reach the rest, or split it over several searches in one run.

### Pricing

You pay per listing delivered, platform usage included in the price. There is no proxy, no subscription and no compute line on your bill; the price per listing is the whole bill. In line with our Kleinanzeigen and Marktplaats scrapers, expect roughly $1-2 per 1,000 listings.

| Event | Price |
| --- | --- |
| Actor start | $0.001 per run |
| Listing scraped | $1.00 per 1,000 |

Listings you do not receive cost nothing: the cap stops the run, duplicates are filtered before charging, and the tiny start fee only exists so a run that returns zero results still covers its overhead.

### FAQ

**Do I need an API key or an account?** No. The actor reads Blocket's public search results directly.

**Can I filter by region?** Yes. `region` restricts results to one of Sweden's 21 counties (län), the same regions Blocket itself offers. Each record also carries the `region` you searched, so you can tell at a glance where a batch came from.

**Can I tell private sellers from companies?** Yes. Every record has a `sellerType` of `private` or `company`, and `sellerName` carries the company name when there is one.

**Does a free listing show a fake price?** No. Items being given away (`tradeType: "free"`) show `price: 0`, not a made-up number and not `null`.

**Can I scrape a specific category, like furniture or electronics?** Yes. Pick it from the `category` field, or paste the category's Blocket URL (with its filters) into `searchUrls`.

**How many listings can one run return?** Up to about 50 pages per search, which is the site's own ceiling for one query. Use several search terms, categories, regions or price bands in one run to go beyond it; the run also warns you when a search holds more than it can serve.

**Does it slow down or get blocked on big pulls?** Runs pace themselves politely. In our measurements the search results serve reliably without any proxy, which is why there is no proxy cost in the price.

***

### Something missing?

If you need an extra field or a filter you use on the site is not exposed here, open an issue on this Actor and describe it. I read every request and small additions usually ship within days. More marketplace and listings Actors are on [my profile](https://apify.com/tagadanar), including [Kleinanzeigen](https://apify.com/tagadanar/kleinanzeigen-scraper) and [Marktplaats](https://apify.com/tagadanar/marktplaats-scraper).

*Blocket scraper, Blocket API alternative, scrape Blocket, Blocket data, Swedish classifieds scraper, Sweden marketplace data, Blocket prisjämförelse, second-hand price monitoring, Blocket sökning exportera, listings to spreadsheet.*

# Actor input Schema

## `query` (type: `array`):

One search per entry, exactly what you would type into the Blocket search box, e.g. <code>cykel</code>, <code>iphone 15</code>, <code>soffa</code>. Leave empty to browse a whole category or region instead.

## `category` (type: `string`):

Restrict the search to one Blocket top-level category, or browse it without a search term.

## `region` (type: `string`):

Restrict the search to one Swedish county (län), or browse it without a search term.

## `priceFrom` (type: `integer`):

Lowest price to include, in Swedish kronor.

## `priceTo` (type: `integer`):

Highest price to include, in Swedish kronor.

## `sort` (type: `string`):

Order of the results, same choices as on the site.

## `maxResults` (type: `integer`):

Stop after this many listings across all searches. You are only charged for listings actually delivered.

## `searchUrls` (type: `array`):

Paste one or more blocket.se search URLs straight from your browser, filters included. When set, the filter fields above are ignored.

## Actor input object example

```json
{
  "query": [
    "cykel"
  ],
  "category": "all",
  "region": "all",
  "sort": "relevance",
  "maxResults": 25
}
```

# Actor output Schema

## `listings` (type: `string`):

One item per listing in the default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": [
        "cykel"
    ],
    "maxResults": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("tagadanar/blocket-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": ["cykel"],
    "maxResults": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("tagadanar/blocket-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": [
    "cykel"
  ],
  "maxResults": 25
}' |
apify call tagadanar/blocket-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=tagadanar/blocket-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Blocket Scraper 🇸🇪 (all-in price per listing)",
        "description": "Search Blocket.se, Sweden's biggest classifieds site, and get clean JSON in seconds: price in SEK, city, category, posting date, seller type and photo. One flat price per listing, platform usage included. No API key needed.",
        "version": "0.1",
        "x-build-id": "S3adfrJ5BKtXcXi8h"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/tagadanar~blocket-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-tagadanar-blocket-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/tagadanar~blocket-scraper/runs": {
            "post": {
                "operationId": "runs-sync-tagadanar-blocket-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/tagadanar~blocket-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-tagadanar-blocket-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "One search per entry, exactly what you would type into the Blocket search box, e.g. <code>cykel</code>, <code>iphone 15</code>, <code>soffa</code>. Leave empty to browse a whole category or region instead.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "all",
                            "business",
                            "building-garden",
                            "animals-supplies",
                            "electronics-appliances",
                            "vehicle-accessories",
                            "parents-children",
                            "clothing-cosmetics",
                            "art-antiques",
                            "furniture-interior",
                            "sport-outdoor",
                            "entertainment-hobby"
                        ],
                        "type": "string",
                        "description": "Restrict the search to one Blocket top-level category, or browse it without a search term.",
                        "default": "all"
                    },
                    "region": {
                        "title": "Region",
                        "enum": [
                            "all",
                            "blekinge",
                            "dalarna",
                            "gotland",
                            "gavleborg",
                            "halland",
                            "jamtland",
                            "jonkoping",
                            "kalmar",
                            "kronoberg",
                            "norrbotten",
                            "skane",
                            "stockholm",
                            "sodermanland",
                            "uppsala",
                            "varmland",
                            "vasterbotten",
                            "vasternorrland",
                            "vastmanland",
                            "vastra-gotaland",
                            "orebro",
                            "ostergotland"
                        ],
                        "type": "string",
                        "description": "Restrict the search to one Swedish county (län), or browse it without a search term.",
                        "default": "all"
                    },
                    "priceFrom": {
                        "title": "Price from (SEK)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lowest price to include, in Swedish kronor."
                    },
                    "priceTo": {
                        "title": "Price up to (SEK)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Highest price to include, in Swedish kronor."
                    },
                    "sort": {
                        "title": "Sort by",
                        "enum": [
                            "relevance",
                            "newest",
                            "oldest",
                            "price-asc",
                            "price-desc"
                        ],
                        "type": "string",
                        "description": "Order of the results, same choices as on the site.",
                        "default": "relevance"
                    },
                    "maxResults": {
                        "title": "Max listings",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Stop after this many listings across all searches. You are only charged for listings actually delivered.",
                        "default": 100
                    },
                    "searchUrls": {
                        "title": "Search URLs (optional, replaces the filters above)",
                        "type": "array",
                        "description": "Paste one or more blocket.se search URLs straight from your browser, filters included. When set, the filter fields above are ignored.",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
