Search current vehicle listings with make, model, price, year, mileage, fuel, gearbox, body type, location and sales form filters, plus sorting and pagination. Prices are numbers plus currency, mileage is in Scandinavian miles. A valid empty result is a successful response.
Run this endpoint
Endpoint
Parameters
Start with the required fields, then add optional filters only when your use case needs them.
Runnable path
This endpoint has no required query parameters.
16 optional filters available.
integer
Optional
Zero-based page number. Defaults to 0.
0
integer
Optional
Listings per page, 1 to 50. Defaults to 50.
50
string
Optional
PRICE_ASC or PRICE_DESC. Defaults to PRICE_ASC.
PRICE_ASC
string
Optional
Make id from the search filters. Example: 0.818 is Volvo.
0.818
string
Optional
County id from the search filters. Example: 0.300001 is Stockholm.
0.300001
array
Optional
Repeatable: 1 used, 2 new, 3 lease, 4 demo. Defaults to 1 and 2. Never 5.
[1,2]
integer
Optional
Fuel id from the search filters. Example: 2 is diesel.
2
integer
Optional
Optional non-negative minimum price in SEK.
10
integer
Optional
Optional non-negative maximum price in SEK.
10
integer
Optional
Optional minimum first registration year.
10
integer
Optional
Optional maximum first registration year.
10
integer
Optional
Optional minimum mileage in Scandinavian miles (1 mil = 10 km).
10
integer
Optional
Optional maximum mileage in Scandinavian miles.
10
integer
Optional
Body type id from the search filters.
10
integer
Optional
Transmission id from the search filters.
10
string
Optional
Optional dealer organisation id to list one dealer's vehicles.
1234567890
Request Examples
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrappa.co/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: YOUR_API_KEY_HERE"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
<?php
use Illuminate\Support\Facades\Http;
$response = Http::timeout(30)
->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
->get('https://scrappa.co/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2');
if ($response->successful()) {
echo $response->body();
} else {
echo "Error: " . $response->status();
}
const options = {
method: 'GET',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE'
}
};
fetch('https://scrappa.co/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2', options)
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.text();
})
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
const axios = require('axios');
const options = {
method: 'GET',
url: 'https://scrappa.co/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2',
headers: {
x-api-key: 'YOUR_API_KEY_HERE',
}
};
try {
const response = await axios(options);
console.log(response.data);
} catch (error) {
console.error('Error:', error.message);
}
require 'net/http'
require 'uri'
uri = URI.parse("https://scrappa.co/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request = Net::HTTP::Get.new(uri.request_uri)
request['x-api-key'] = 'YOUR_API_KEY_HERE'
begin
response = http.request(request)
puts response.body
rescue => e
puts "Error: #{e.message}"
end
import http.client
import json
conn = http.client.HTTPSConnection("scrappa.co")
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
conn.request("GET", "/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
except Exception as e:
print(f"Error: {e}")
finally:
conn.close()
import requests
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
response = requests.get('https://scrappa.co/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2', headers=headers)
response.raise_for_status()
print(response.text)
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class ApiExample {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://scrappa.co/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2")
.addHeader("x-api-key", "YOUR_API_KEY_HERE")
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
System.out.println(response.body().string());
} else {
System.out.println("Error: " + response.code());
}
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://scrappa.co/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2", nil)
if err != nil {
fmt.Println("Error creating request:", err)
return
}
req.Header.Set("x-api-key", "YOUR_API_KEY_HERE")
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error making request:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println(string(body))
}
#!/bin/bash
curl -X GET \
-H "x-api-key: YOUR_API_KEY_HERE" \
"https://scrappa.co/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2"
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY_HERE");
try
{
var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "https://scrappa.co/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2"));
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
import axios from 'axios';
async function run(): Promise<void> {
try {
const response = await axios({
method: 'GET',
url: 'https://scrappa.co/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE',
},
});
console.log(response.data);
} catch (error) {
console.error('Error:', error);
}
}
void run();
use reqwest::Client;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new();
let response = client
.get("https://scrappa.co/api/blocket-bil/v1/search?page=0&lim=50&sort=PRICE_ASC&variant=0.818&location=0.300001&sales_form%5B0%5D=1&sales_form%5B1%5D=2&fuel=2")
.header("x-api-key", "YOUR_API_KEY_HERE")
.send()
.await?;
println!("{}", response.text().await?);
Ok(())
}
Response Schema
Example response fields are illustrative; inspect the JSON before integrating.
Example response fields
Scan these fields before integrating.
success
data
meta
{
"success": true,
"data": {
"search_metadata": {
"page": 0,
"lim": 50,
"sort": "PRICE_ASC",
"total_returned": 50,
"total_matches": 1456,
"has_more": true,
"paging": {
"param": "page",
"current": 1,
"last": 30
}
},
"listings": {
"0": {
"id": "26235204",
"heading": "Volvo V50",
"location": "V\u00e4llingby",
"price": {
"amount": 7500,
"currency_code": "SEK",
"price_unit": "kr"
},
"year": 2010,
"mileage": 32194,
"mileage_unit": "SCANDINAVIAN_MILE",
"fuel": "Diesel",
"transmission": "Manuell"
},
"filters": {
"variant": {
"display_name": "M\u00e4rke",
"type": "STANDARD_FILTER",
"items": [
{
"label": "Volvo",
"value": "0.818",
"hits": 1456
}
]
}
}
}
},
"meta": {
"endpoint_family": "search"
}
}
Errors
Handle these documented responses before retrying or showing customer-facing failures.
Validation Error
A public parameter or range is invalid. This response is not billable.
{
"errors": {
"lim": [
"The limit may not exceed 50 listings."
]
},
"message": "The request validation failed"
}Listing Not Found
The requested Blocket listing was not found. This response is not billable.
{
"error": {
"code": "NOT_FOUND",
"message": "The requested Blocket listing was not found."
},
"success": false
}Invalid Source Response
Blocket returned an unexpected response shape. This response is not billable.
{
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "Blocket returned an unexpected response."
},
"success": false
}Service Unavailable
The upstream service is temporarily unavailable. Please retry shortly.
{
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "The Blocket API is temporarily unavailable. Please retry."
},
"success": false
}Generate Code with AI
Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.
Try It Live
Test this endpoint in our interactive playground with real data.