Skip to content
Scrappa Get API key
AutoScout24 API 1 credit/request

AutoScout24 Search API Documentation

GET https://scrappa.co/api/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20

Search current vehicle listings across nine European markets with validated make, model, price, mileage, registration, power, fuel, gearbox, body, equipment, seller and location filters, plus sorting and pagination. A valid empty result is a successful response.

AutoScout24 Search API Documentation 1 credit/request

Endpoint

Request preview
GET
https://scrappa.co/api/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20
Auth header
x-api-key
Cost
1 credit/request
Response preview
200 OK
{
    "success": true,
    "data": {
        "listings": [
            {
                "listing_id": "072bed2b-34e0-4fa5-b3b9-3ce141233fd1",
                "title": "Citroen C3 Shine",
                "price": {
                    "amount": 9399,
                    "currency": "EUR",
                    "formatted": "\u20ac 9.399"
                }
            }
        ],
...

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.

25 optional filters available.

market string Optional

Marketplace: de, at, be, it, fr, nl, es, com or pl. Defaults to de.

Example value de
make_id string Optional

Numeric make id from the taxonomy endpoint.

Example value 13
model_id string Optional

Numeric model id from the taxonomy endpoint. Requires make_id.

Example value 1639
price_min integer Optional

Optional non-negative minimum price.

Example value 5000
price_max integer Optional

Optional non-negative maximum price.

Example value 20000
mileage_min integer Optional

Optional non-negative minimum mileage in km.

Example value 10
mileage_max integer Optional

Optional non-negative maximum mileage in km.

Example value 10
registration_year_min integer Optional

Optional minimum first-registration year.

Example value 10
registration_year_max integer Optional

Optional maximum first-registration year.

Example value 10
power_min integer Optional

Optional minimum power in power_unit.

Example value 10
power_max integer Optional

Optional maximum power in power_unit.

Example value 10
power_unit string Optional

kw or ps. Defaults to kw.

Example value example
fuel array Optional

Repeatable fuel code (2, 3, B, C, D, E, H, L, M, O).

Example value ["example"]
transmission array Optional

Repeatable gearbox code: A, M or S.

Example value ["example"]
body_type array Optional

Repeatable body-type id from the taxonomy endpoint.

Example value ["example"]
equipment array Optional

Repeatable equipment id from the taxonomy endpoint.

Example value ["example"]
seller_type string Optional

dealer or private.

Example value example
offer string Optional

new, used or annual.

Example value example
usage_state array Optional

Repeatable N (new) or U (used).

Example value ["example"]
zip string Optional

Optional postal code for the location filter.

Example value example
radius integer Optional

Optional radius in km around zip.

Example value 10
sort string Optional

standard, price, age, mileage, year, power, make, distance, financerate or leasing_rate. Defaults to standard.

Example value price
order string Optional

asc or desc. Defaults to asc.

Example value example
page integer Optional

One-based page number. Defaults to 1.

Example value 2
limit integer Optional

Listings per page, 1 to 20. Defaults to 20.

Example value 20

Request Examples

PHP
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://scrappa.co/api/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20",
    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
<?php

use Illuminate\Support\Facades\Http;

$response = Http::timeout(30)
    ->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
    ->get('https://scrappa.co/api/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20');

if ($response->successful()) {
    echo $response->body();
} else {
    echo "Error: " . $response->status();
}
JavaScript
const options = {
    method: 'GET',
    headers: {
        'x-api-key': 'YOUR_API_KEY_HERE'
    }
};

fetch('https://scrappa.co/api/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20', 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));
JavaScript
const axios = require('axios');

const options = {
    method: 'GET',
    url: 'https://scrappa.co/api/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20',
    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);
}
Ruby
require 'net/http'
require 'uri'

uri = URI.parse("https://scrappa.co/api/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20")
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
Python
import http.client
import json

conn = http.client.HTTPSConnection("scrappa.co")

headers = {
    'x-api-key': 'YOUR_API_KEY_HERE',
}

try:
    conn.request("GET", "/api/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20", headers=headers)
    res = conn.getresponse()
    data = res.read()
    print(data.decode("utf-8"))
except Exception as e:
    print(f"Error: {e}")
finally:
    conn.close()
Python
import requests

headers = {
    'x-api-key': 'YOUR_API_KEY_HERE',
}

try:
    response = requests.get('https://scrappa.co/api/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20', headers=headers)
    response.raise_for_status()
    print(response.text)
except requests.exceptions.RequestException as e:
    print(f"Error: {e}")
Java
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/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20")
        .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());
        }
    }
}
Go
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    client := &http.Client{}
    req, err := http.NewRequest("GET", "https://scrappa.co/api/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20", 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))
}
Terminal
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20"
C#
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/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20"));
            var content = await response.Content.ReadAsStringAsync();
            Console.WriteLine(content);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}
TypeScript
import axios from 'axios';

async function run(): Promise<void> {
    try {
        const response = await axios({
            method: 'GET',
            url: 'https://scrappa.co/api/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20',
            headers: {
        'x-api-key': 'YOUR_API_KEY_HERE',
            },
        });

        console.log(response.data);
    } catch (error) {
        console.error('Error:', error);
    }
}

void run();
RUST
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/autoscout24/v1/search?market=de&make_id=13&model_id=1639&price_min=5000&price_max=20000&sort=price&page=2&limit=20")
        .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
JSON Response
200 OK
{
    "success": true,
    "data": {
        "listings": [
            {
                "listing_id": "072bed2b-34e0-4fa5-b3b9-3ce141233fd1",
                "title": "Citroen C3 Shine",
                "price": {
                    "amount": 9399,
                    "currency": "EUR",
                    "formatted": "\u20ac 9.399"
                }
            }
        ],
        "pagination": {
            "page": 2,
            "limit": 20,
            "total": 388,
            "total_pages": 21,
            "has_more": true,
            "next_page": 3
        }
    },
    "meta": {
        "endpoint_family": "search"
    }
}

Errors

Handle these documented responses before retrying or showing customer-facing failures.

422

Validation Error

A public parameter or range is invalid. This response is not billable.

{
    "errors": {
        "limit": [
            "The limit may not exceed 20 listings."
        ]
    },
    "message": "The request validation failed"
}
502

Invalid Source Response

AutoScout24 returned an unexpected response shape. This response is not billable.

{
    "error": {
        "code": "UPSTREAM_UNAVAILABLE",
        "message": "AutoScout24 returned an unexpected response."
    },
    "success": false
}
503

Service Unavailable

The listing source was blocked, unavailable or timed out. This response is not billable.

{
    "error": {
        "code": "UPSTREAM_UNAVAILABLE",
        "message": "The AutoScout24 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.