Blocket.se Scraper avatar

Blocket.se Scraper

Pricing

from $2.40 / 1,000 results

Go to Apify Store
Blocket.se Scraper

Blocket.se Scraper

Blocket.se has been Sweden's default place to sell used goods for decades, making its asking prices a reference point, while a weak krona keeps them looking cheap to euro buyers. Rows give price in kronor, locality, trade type and a retailer-or-private flag. No seller names or coordinates.

Pricing

from $2.40 / 1,000 results

Rating

0.0

(0)

Developer

Lowland Data

Lowland Data

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

an hour ago

Last modified

Share

Blocket.se has been Sweden's default place to sell something used for decades, which makes its asking prices the closest thing the country has to a reference. Prices are in kronor, and a weak krona has been making Swedish goods look cheap to euro buyers.

This actor turns a Blocket search into rows: title, price in whole kronor with the currency from the listing, locality, trade type, posting timestamp, photos, and whether the seller is a retailer or a private person. Filter by price band and posting date, sort newest first, run it daily. Seller names, shop names and exact coordinates are never read.

Live health record: lowlanddata.com/status/blocket-se-scraper - 30-day success rate and daily canary results, failures included. Full input/output reference: tool page.

No seller personal data, ever. This scraper is built GDPR-first: seller names, shop names and the listing's exact map coordinates never appear in the output: not as an option you have to remember to switch off, but by design. The only seller information included is whether the listing comes from a retailer or a private seller.

Quick start (30 seconds)

  1. Put what you'd type in the Blocket.se search box into searchQuery, e.g. cykel.
  2. Click Start. That's the whole minimum setup.
  3. When the run finishes, open the dataset's Overview tab for a clean table, or Export it as CSV/Excel/JSON.

Optional knobs: a price band in Swedish kronor and newest-first sorting for monitoring, and any input works on a daily Schedule.

What you can build with it

  • Watch a niche for underpriced listings. Run searchQuery: "el-cykel" with priceMax: 15000 and sortBy: "date" hourly. Every new listing arrives with priceAmount parsed and give-aways (priceAmount: 0) included.
  • Map second-hand prices by locality. Every listing carries its city: chart what the same bike costs in Stockholm versus Gothenburg without touching a coordinate.
  • Track retailer vs. private supply. The sellerType flag tells you how much of any category is professional traders: market structure no Blocket.se page shows you.
  • Feed an AI agent clean data. Every field is structured, predictable and free of personal data, so an assistant or pipeline can consume it directly: no scrubbing, no compliance review before you store it.

What you get

Each listing is one dataset item:

{
"listingId": "474000001",
"url": "https://www.blocket.se/recommerce/forsale/item/474000001",
"title": "Cykel 20 tum",
"priceAmount": 600,
"currency": "SEK",
"postedAt": "2026-08-21T06:06:40.000Z",
"city": "Västerås",
"tradeType": "Säljes",
"sellerType": "private",
"imageUrls": ["https://images.blocket.se/example"]
}

Field notes, so you know exactly what you are buying:

  • priceAmount is in whole Swedish kronor; 0 covers give-away listings. Listings without a price carry no amount.
  • tradeType is the site's own label for the ad type: for sale, give-away or wanted ad.
  • city is locality-level. Blocket.se's data contains exact coordinates. They are deliberately never collected.
  • postedAt reflects publication or the seller's last bump.

How much does it cost to scrape Blocket.se?

$3.00 per 1,000 listings delivered, pay-as-you-go, no subscription, and you pay per result rather than per hour. A run that finds nothing still costs the $0.005 actor start. In plain dollars:

  • 100 listings ≈ $0.30: a daily niche watch.
  • 500 listings ≈ $1.50: a solid market snapshot.
  • A 2,500-listing crawl ≈ $7.50: a full query window, deduplicated.

The price is all-inclusive: your runs' platform usage is covered by it, with no separate compute or proxy charges. Runs are fast: a scoped few-hundred-item run typically finishes in under ten seconds. Datacenter proxies are sufficient, no residential proxy surcharge needed.

Free-plan runs are limited to a sample of 5 items, enough to evaluate the output format against your real query.

Not technical? Let your AI assistant set it up

Copy this into ChatGPT, Claude or any AI assistant, fill in the one line, and follow the conversation:

Help me set up the "Blocket.se Scraper" actor on Apify
(https://apify.com/lowlanddata/blocket-se-scraper). Guide me one step at a time.
What I want to watch: [E.G. "electric bikes under 15000 Swedish kronor"]
Guide me to:
1. Propose my input values: searchQuery (what I'd type in the Blocket.se search box),
an optional priceMin/priceMax band in Swedish kronor, sortBy "date" for newest-first
monitoring, and maxItems.
2. Create a free Apify account (apify.com), open the actor page, paste the values
into the Input form, and start a run.
3. Set up a daily Schedule in the Apify Console with the same input, plus an email
or Slack integration so new results reach me automatically.
4. Show me how to export results as CSV/Excel, or read them from the API if I code.
5. If the results are what I wanted, remind me at the end to leave a quick rating on the actor page, and to report anything broken or missing on its Issues tab.

Input

FieldDescription
searchQueryWhat you'd type in the Blocket.se search box. Required.
priceMinOnly listings costing at least this many Swedish kronor.
priceMaxOnly listings costing at most this many Swedish kronor.
sortBydate (newest first, default), price_asc, price_desc, or relevance.
postedAfterOnly listings posted on or after this date (YYYY-MM-DD). Stops early with newest-first sorting.
postedBeforeOnly listings posted on or before this date (YYYY-MM-DD).
maxItemsStop after this many listings (default 1000).
proxyConfigurationProxy settings; keep Apify proxy enabled.

A run minimally needs a searchQuery; invalid combinations (like an inverted price band) fail immediately with the reason in the run's status message.

Use it from your code

Run the actor and get items straight back with one HTTP call (fine for scoped runs up to ~5 minutes):

curl "https://api.apify.com/v2/acts/lowlanddata~blocket-se-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-X POST -H "Content-Type: application/json" \
-d '{"searchQuery": "cykel", "maxItems": 100}'

Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('lowlanddata/blocket-se-scraper').call({
searchQuery: 'cykel',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("lowlanddata/blocket-se-scraper").call(
run_input={"searchQuery": "cykel", "maxItems": 100})
items = client.dataset(run["defaultDatasetId"]).list_items().items

For bigger crawls, start the run asynchronously and fetch the dataset when the finished-run webhook fires. Schedules (e.g. a daily price snapshot), webhooks and the Make/Zapier/n8n integrations all work out of the box: this is a standard Apify actor.

Use it with AI agents (MCP)

Claude, Cursor and other MCP-capable agents can run this scraper as a tool through Apify's hosted MCP server: the agent fills in the search itself, starts the run and reads the results: no glue code.

Claude Code:

$claude mcp add apify --transport http "https://mcp.apify.com?actors=lowlanddata/blocket-se-scraper"

Cursor or Claude Desktop (add a custom connector / MCP server with this URL):

https://mcp.apify.com?actors=lowlanddata/blocket-se-scraper

Sign in with your Apify account when prompted. Runs are billed to it. Setup details per client: Apify MCP docs, or start from this actor's own MCP page: apify.com/lowlanddata/blocket-se-scraper/api/mcp.

Prompts that work once connected:

  • "Search Blocket.se for 'el-cykel' under 15000 Swedish kronor and summarize the price distribution."
  • "Get the 100 newest 'iphone 15' listings from Blocket.se and flag private sellers below the median price."
  • "Watch Blocket.se for 'kajak' and tell me when something under 3 000 Swedish kronor appears."

Beyond the ~2,600-result window

Blocket.se serves at most 50 pages per query (about 2,650 listings). The run reports honestly when a query is bigger than its window: split broad queries by price bands (priceMin/priceMax) across runs; overlapping runs merge cleanly on listingId.

Public listing data (prices, titles, localities) is public commercial information, and this scraper is built so that the hard part of the question never arises: no personal data enters your dataset in the first place. Sweden applies the GDPR, supervised by the Swedish Authority for Privacy Protection (IMY); an output that carries none of the seller's personal data is the point of this actor, not an afterthought.

Structurally, the extractor maps a fixed whitelist of fields out of the page's data. The exact coordinates and any shop or organisation name are never read into the output: the only seller-derived value is the retailer-vs-private flag. Requests are paced, load on the site is kept negligible, and no anti-bot protection is bypassed.

One honest limit: titles are the seller's own words, delivered as-is. If a seller chooses to type contact details into their listing title, that text is not rewritten. The guarantee covers the data fields, not the content sellers publish about themselves.

Is there a Blocket.se API alternative?

Blocket.se's public API programme is aimed at partners, not ad-hoc listing search. This actor is the practical alternative: the same listings as structured JSON through one HTTP call (run-sync-get-dataset-items), on a schedule, or as an MCP tool for AI agents, with the GDPR question already answered in the data itself.

Does Blocket.se block scrapers?

Blocket.se serves its listings openly to ordinary requests, and this actor stays inside that welcome: paced requests, standard datacenter proxies, load kept negligible. No CAPTCHA fights, no bot-wall cat-and-mouse, which is also why runs are fast and reliable enough for daily schedules.

How do I monitor Blocket.se prices?

Set sortBy: "date" with your query, cap maxItems to a page or two, and add a daily (or hourly) Schedule in the Apify Console with an email/Slack integration on the runs. Every new listing lands in your inbox with the price already parsed. The AI-assistant prompt above walks a non-technical user through exactly this setup. Even tighter: set postedAfter to yesterday's date: the dataset then contains only the new listings, nothing to dedupe on your side.

FAQ

Can I get seller names or phone numbers? No, by design. That is the product: data you can store, share and process without a GDPR review. The output tells you only whether the seller is a retailer or a private person.

Does it cover cars, boats and property? This actor searches the general-goods marketplace. Blocket.se's vehicle and property verticals carry different data: candidates for separate actors, done properly.

Can I get only the newest listings? Yes, set postedAfter to a date (yesterday, say) and the dataset contains only listings posted since then. With newest-first sorting the run stops paging as soon as it provably reaches older listings, so a daily watch stays fast and cheap.

How fresh is the data? Live at run time: every run queries Blocket.se directly. For continuous freshness, schedule the actor.

How do I export Blocket listings to Excel? Open the run's dataset in the Apify Console and pick Excel from the Export menu: CSV, JSON and XML are there too, and the same formats are available over the API.

Does it work with Make, Zapier or n8n? Yes, it is a standard Apify actor; all platform integrations, webhooks and schedules apply.

Is there a Blocket API for developers? Blocket's own API programme targets partners, not ad-hoc search. This actor gives you the equivalent for listings: structured JSON on demand, no partnership required.

Is scraping Blocket legal in Sweden? Listing prices, titles and localities are public commercial data. The actor keeps GDPR out of your way by never collecting seller identity: the only seller-derived field is the retailer-vs-private flag, which identifies nobody.

What does it cost to scrape Blocket? $3.00 per 1,000 listings, billed only for what is delivered. A 100-listing daily watch runs about $0.30; failed or empty runs are not billed.

Can I download every result for a broad Blocket search? Blocket serves at most 50 pages per query, roughly 2,650 listings. For bigger queries, split by priceMin/priceMax across several runs; overlaps merge cleanly on listingId.

How do I sort Blocket results by price? Set sortBy to price_asc or price_desc. The default is date (newest first); relevance matches the site's own ranking.

Can I filter Blocket listings by posting date? Yes, postedAfter and postedBefore take a YYYY-MM-DD date. Combined with newest-first sorting, postedAfter also stops the run early, which keeps daily monitoring cheap.

How do I tell private sellers from dealers on Blocket? Every item carries sellerType: retailer or private. That is market structure Blocket's own pages don't aggregate for you.

Does the output include map coordinates? No. Blocket's data contains exact coordinates, but this actor deliberately never collects them: you get locality-level city and nothing finer.

How long does a run take? A scoped few-hundred-item run typically finishes in under ten seconds, so it fits inside a synchronous API call.

How many listings can a single run return? Up to maxItems, which defaults to 1,000. Apify free-plan runs return a 5-item sample.

Can I test the scraper for free? Yes, on the free plan you get a 5-item sample from your real query, which is enough to validate the fields against your pipeline.

Are listing photos included? Yes, imageUrls is an array of image links for each listing.

Why does a listing show priceAmount 0? That is a give-away ad; the actor keeps the zero rather than dropping the listing.

Can ChatGPT or Claude run this scraper for me? Any MCP-capable agent can, through Apify's hosted MCP server. The agent fills in the search, runs it and reads the results. Setup URLs are in the MCP section above.

Why did postedAt change on a listing I saw before? postedAt reflects publication or the seller's most recent bump, so a bumped listing surfaces again with a newer timestamp.

Working the Nordic second-hand market? The same GDPR-clean guarantee, same output discipline:

Troubleshooting

The actor fails fast with the reason in the run's status message:

  • "priceMin must not be higher than priceMax.": swap the two values.
  • "The site blocked the run before any results could be fetched. This is usually temporary - retry in a few minutes.": a temporary block on the first request; a retry usually lands on a clean proxy session.
  • "... the site serves at most this many pages per query ...": the query is bigger than Blocket.se's result window; add a price band for full coverage.
  • Fewer items than requested on a free plan: the 5-item free sample cap; run on a paid Apify plan for full results.

Support

Found an issue or missing a field you need? Open an issue on the actor's Issues tab. Reports get fixed, this actor is actively maintained.

Working well for you? A rating on this page takes ten seconds and helps other buyers find a GDPR-clean option among the lookalikes. It is also the clearest signal of what we should build next.