Skip to content
Scrappa Get API key
Bring a Trailer API 1 credit/request

Bring a Trailer Auction Search API Documentation

GET https://scrappa.co/api/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=2

Search Bring a Trailer auctions, live and completed results. Filter by auction status, sale status, make or model term, category, era, origin, location country, year range, bid range, auction type, range and free text, with sorting and page pagination. Results carry the current bid in USD, the bid count, the reserve state, the sale state (sold or bid to), the end time as ISO 8601 UTC, the location, the postal code, the seller type and the thumbnail. Page with page and per_page (1 to 32) and read has_more from the live total page count.

Bring a Trailer Auction Search API Documentation 1 credit/request

Endpoint

Request preview
GET
https://scrappa.co/api/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=2
Auth header
x-api-key
Cost
1 credit/request
Response preview
200 OK
{
    "success": true,
    "data": {
        "metadata": {
            "found": 1285,
            "page": 1,
            "per_page": 2,
            "max_num_pages": 643,
            "has_more": true
        },
        "listings": [
            {
                "id": 120648745,
                "title": "5k-Mile 2016 Ferrari 488 Spider",
...

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.

21 optional filters available.

auction_status string Optional

active (default) or past.

Example value active
sale_status string Optional

sold or unsold (reserve not met). Past auctions only.

Example value example
sort string Optional

ta (ending soonest), td (recently closed), ba (bid low to high), bd (bid high to low) or vd (popular).

Example value ta
page integer Optional

1-based result page.

Example value 1
per_page integer Optional

Listings per page, 1 to 32.

Example value 2
make_or_model string Optional

Comma-separated term IDs from the filters endpoint, e.g. 1832980 for Ferrari.

Example value example
category string Optional

Comma-separated category term IDs, e.g. 434 for Convertibles.

Example value example
era string Optional

Era slug from the filters endpoint, e.g. pre-1900 or 2010s.

Example value example
origin string Optional

Comma-separated origin term IDs, e.g. 8 for Italian.

Example value example
location_country string Optional

Comma-separated location term IDs, e.g. 89009061 for United States.

Example value example
minimum_year integer Optional

Minimum model year.

Example value 10
maximum_year integer Optional

Maximum model year.

Example value 10
minimum_bid integer Optional

Minimum current bid in USD.

Example value 10
maximum_bid integer Optional

Maximum current bid in USD.

Example value 10
auction_type string Optional

premium, no-reserve or alumni.

Example value example
range string Optional

7D, 30D, 1Y, 2Y or 5Y.

Example value example
zip_code string Optional

Zip code for location filtering. Requires user_lat and user_lon.

Example value example
user_lat number Optional

Latitude for location filtering.

Example value 10
user_lon number Optional

Longitude for location filtering.

Example value 10
maximum_distance integer Optional

Maximum distance for location filtering.

Example value 10
s string Optional

Free-text search query.

Example value example

Request Examples

PHP
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://scrappa.co/api/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=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
<?php

use Illuminate\Support\Facades\Http;

$response = Http::timeout(30)
    ->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
    ->get('https://scrappa.co/api/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=2');

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/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=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));
JavaScript
const axios = require('axios');

const options = {
    method: 'GET',
    url: 'https://scrappa.co/api/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=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);
}
Ruby
require 'net/http'
require 'uri'

uri = URI.parse("https://scrappa.co/api/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=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
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/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=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()
Python
import requests

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

try:
    response = requests.get('https://scrappa.co/api/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=2', 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/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=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());
        }
    }
}
Go
package main

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

func main() {
    client := &http.Client{}
    req, err := http.NewRequest("GET", "https://scrappa.co/api/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=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))
}
Terminal
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=2"
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/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=2"));
            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/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=2',
            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/bring-a-trailer/v1/auctions/search?auction_status=active&sort=ta&per_page=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
JSON Response
200 OK
{
    "success": true,
    "data": {
        "metadata": {
            "found": 1285,
            "page": 1,
            "per_page": 2,
            "max_num_pages": 643,
            "has_more": true
        },
        "listings": [
            {
                "id": 120648745,
                "title": "5k-Mile 2016 Ferrari 488 Spider",
                "year": 2016,
                "bid_current": 180000,
                "bid_currency": "USD",
                "bid_count": 13,
                "has_reserve": true,
                "reserve": null,
                "sale_state": null,
                "sale_price": null,
                "sale_date": null,
                "ends_at": "2026-10-12T17:00:00+00:00",
                "permalink": "https://bringatrailer.com/listing/2016-ferrari-488-spider-14/",
                "lat": "40.7293",
                "lon": "-96.7062",
                "postal_code": "68512",
                "images": [
                    "https://bringatrailer.com/wp-content/uploads/2026/08/IMG_4273-scaled-copy-2026-09-04-2f8-60070.jpeg?w=470&h=318&crop=1"
                ],
                "comments_count": 14,
                "seller_type": "private",
                "post_status": "active"
            }
        ]
    },
    "meta": {
        "endpoint_family": "search"
    }
}

Errors

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

422

HTTP 422

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

404

HTTP 404

Bring a Trailer rejected the request. This response is not billable.

502

HTTP 502

Bring a Trailer returned an unexpected response. This response is not billable.

503

HTTP 503

Bring a Trailer did not return usable data for this request. This response is not billable.

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.