Search Listings
curl --request GET \
--url https://scrapebadger.com/v1/gumtree/search \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://scrapebadger.com/v1/gumtree/search"
headers = {"X-API-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};
fetch('https://scrapebadger.com/v1/gumtree/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/gumtree/search",
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: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/gumtree/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/gumtree/search")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/gumtree/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"query": "<string>",
"category": "<string>",
"category_name": "<string>",
"category_id": 123,
"location": "<string>",
"location_name": "<string>",
"distance": 123,
"sort": "<string>",
"page": 123,
"total_pages": 123,
"total_results": 123,
"result_count": 123,
"url": "<string>",
"category_facets": [
{}
],
"listings": [
{
"id": "<string>",
"title": "<string>",
"url": "<string>",
"description": "<string>",
"price": 123,
"price_text": "<string>",
"price_frequency": "<string>",
"currency": "<string>",
"location": "<string>",
"location_id": "<string>",
"postcode": "<string>",
"latitude": 123,
"longitude": 123,
"distance_text": "<string>",
"distance_miles": 123,
"category_id": 123,
"category_name": "<string>",
"category_ids": [
123
],
"image_url": "<string>",
"image_urls": [
"<string>"
],
"image_count": 123,
"posted_text": "<string>",
"posted_utc": 123,
"posted_at": "<string>",
"status": "<string>",
"seller_type": "<string>",
"seller_id": "<string>",
"account_id": "<string>",
"is_pro_seller": true,
"is_featured": true,
"is_urgent": true,
"is_bumped_up": true,
"is_standout": true,
"is_premium": true,
"has_video": true,
"supports_shipping": true,
"favourite_count": 123,
"seller_skills": [
"<string>"
],
"attributes": [
{}
]
}
]
}Search
Search Listings
Search gumtree.com classified ads by keyword, category, town or UK postcode radius, price band, seller type and category-specific filters.
GET
/
v1
/
gumtree
/
search
Search Listings
curl --request GET \
--url https://scrapebadger.com/v1/gumtree/search \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://scrapebadger.com/v1/gumtree/search"
headers = {"X-API-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};
fetch('https://scrapebadger.com/v1/gumtree/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/gumtree/search",
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: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/gumtree/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/gumtree/search")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/gumtree/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"query": "<string>",
"category": "<string>",
"category_name": "<string>",
"category_id": 123,
"location": "<string>",
"location_name": "<string>",
"distance": 123,
"sort": "<string>",
"page": 123,
"total_pages": 123,
"total_results": 123,
"result_count": 123,
"url": "<string>",
"category_facets": [
{}
],
"listings": [
{
"id": "<string>",
"title": "<string>",
"url": "<string>",
"description": "<string>",
"price": 123,
"price_text": "<string>",
"price_frequency": "<string>",
"currency": "<string>",
"location": "<string>",
"location_id": "<string>",
"postcode": "<string>",
"latitude": 123,
"longitude": 123,
"distance_text": "<string>",
"distance_miles": 123,
"category_id": 123,
"category_name": "<string>",
"category_ids": [
123
],
"image_url": "<string>",
"image_urls": [
"<string>"
],
"image_count": 123,
"posted_text": "<string>",
"posted_utc": 123,
"posted_at": "<string>",
"status": "<string>",
"seller_type": "<string>",
"seller_id": "<string>",
"account_id": "<string>",
"is_pro_seller": true,
"is_featured": true,
"is_urgent": true,
"is_bumped_up": true,
"is_standout": true,
"is_premium": true,
"has_video": true,
"supports_shipping": true,
"favourite_count": 123,
"seller_skills": [
"<string>"
],
"attributes": [
{}
]
}
]
}Search
Range filters (
gumtree.com listings across every vertical — For Sale, Motors, Property,
Jobs, Services, Pets and Community. Returns ~25–30 listings per page, up to 50
pages.
Credits: 5
Authorization
string
required
Your ScrapeBadger API key.
Query Parameters
string
Search keywords, e.g.
mountain bike. Optional — omit it to browse a whole
category.string
default:"all"
Category slug, e.g.
cars, for-sale, property-to-rent, jobs, pets,
bicycles. Browse every slug with
/categories.string
default:"uk"
Location slug (
london, manchester), town name or full UK postcode
(SW1A 1AA). uk searches nationwide. Resolve a place with
/locations/autocomplete.number
Radius in miles around
location, greater than 0 and up to 1000.integer
Minimum price in GBP. Needs a
category other than all.integer
Maximum price in GBP. Needs a
category other than all.string
default:"relevance"
Result ordering. One of
relevance, date, price_asc, price_desc,
distance.string
private or trade. trade covers dealers, letting agents and recruiters.boolean
default:"false"
Only ads the seller marked urgent.
boolean
default:"false"
Only ads with photos.
string
Category-specific filters as comma-separated
key:value pairs, e.g.
vehicle_make:bmw,vehicle_fuel_type:petrol,min_vehicle_mileage:10000. Repeat
a key to select several values (vehicle_make:bmw,vehicle_make:audi).
Discover the keys and values for a category with
/search/filters.integer
default:"1"
Result page,
1–50.Response
string
Echo of the requested keywords.
string
Category slug the search ran in.
string
e.g.
Cars.integer
Gumtree category id.
string
Location slug or postcode searched.
string
e.g.
United Kingdom.number
Radius in miles, when one was applied.
string
The sort that was applied.
integer
The page returned.
integer
Pages available for this search (at most
50).integer
Total matching listings Gumtree reports.
integer
Listings on this page.
string
The gumtree.com search URL equivalent to this request.
CategoryFacet[]
Sub-categories of the result set with counts —
name, slug, count. Feed
a slug back in as category to drill down.ListingSummary[]
Listing cards.
Show ListingSummary
Show ListingSummary
string
Listing id — use it for
/listings/{listing_id}.string
string
string
Gumtree’s short description.
number
Numeric price in GBP.
string
Price as shown, e.g.
£1,850.00pm.string
pm / pw for rentals.string
Always
GBP.string
e.g.
Penkridge, Staffordshire.string
string
number
number
string
e.g.
13 miles from the search location.number
integer
string
integer[]
Root-to-leaf category ids.
string
string[]
integer
string
Relative age as shown, e.g.
3 days ago.number
Unix seconds.
string
ISO 8601 UTC.
string
e.g.
LIVE.string
Private, Trade or Agency.string
string
boolean
boolean
Paid top-slot ad.
boolean
boolean
boolean
boolean
boolean
boolean
integer
string[]
Services listings only.
Attribute[]
Category attributes —
key, label, value, unit. Motors listings
carry the full vehicle spec (make, model, year, mileage, fuel, engine,
MPG, CO2, insurance group, history-check flags).Example
curl "https://scrapebadger.com/v1/gumtree/search?category=cars" \
-H "X-API-Key: YOUR_API_KEY"
const res = await fetch(
"https://scrapebadger.com/v1/gumtree/search?" +
new URLSearchParams({ category: "cars" }),
{ headers: { "X-API-Key": process.env.SCRAPEBADGER_API_KEY } },
);
const data = await res.json();
import requests
res = requests.get(
"https://scrapebadger.com/v1/gumtree/search",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"category": "cars"},
)
data = res.json()
Response
{
"query": null,
"category": "cars",
"category_name": "Cars",
"category_id": 9311,
"location": "uk",
"location_name": "United Kingdom",
"distance": null,
"sort": "relevance",
"page": 1,
"total_pages": 50,
"total_results": 139812,
"result_count": 30,
"listings": [
{
"id": "1802409381",
"title": "Ford, RANGER, Pick Up, 2024, Automatic, 1996 (cc)",
"url": "https://www.gumtree.com/p/ford/ford-ranger-pick-up-2024-automatic-1996-cc-/1802409381",
"description": "2024 Ford Ranger Automatic – NO VAT – Only 11,400 Miles\n\nVery clean, low-mileage example of a 2024 Ford Ranger with just 11,400 miles from new...",
"price": 29000.0,
"price_text": "£29,000.00",
"price_frequency": null,
"currency": "GBP",
"location": "Penkridge, Staffordshire",
"location_id": "11002225",
"postcode": "ST195DU",
"latitude": 52.7257,
"longitude": -2.10523,
"category_id": 10306,
"category_name": "Ford",
"category_ids": [2551, 9311, 10306],
"image_url": "https://img.gumtree.com/ePR8PyKf84wPHx7_RYmEag/c77d793ecce84e13a9_a54724b51d3e/86",
"image_count": 17,
"posted_text": "4 days ago",
"posted_utc": 1791395043.988,
"posted_at": "2026-10-07T17:44:03.988000Z",
"status": "LIVE",
"seller_type": "Private",
"seller_id": "96740710",
"is_pro_seller": false,
"is_featured": true,
"is_urgent": true,
"is_bumped_up": false,
"is_standout": false,
"favourite_count": 1,
"attributes": [
{ "key": "vehicle_make", "label": "Make", "value": "Ford", "unit": null },
{ "key": "vehicle_model", "label": "Model", "value": "RANGER", "unit": null },
{ "key": "vehicle_registration_year", "label": "Year", "value": "2024", "unit": null },
{ "key": "vehicle_mileage", "label": "Mileage", "value": "11400", "unit": "miles" },
{ "key": "vehicle_fuel_type", "label": "Fuel type", "value": "Diesel", "unit": null },
{ "key": "vehicle_engine_power", "label": "Engine Power", "value": "205", "unit": "bhp" },
{ "key": "vehicle_not_writeoff", "label": "Not written-off", "value": "true", "unit": null },
{ "key": "vehicle_previous_keepers", "label": "Previous Keepers", "value": "4", "unit": null }
]
}
],
"category_facets": [],
"url": "https://www.gumtree.com/search?search_category=cars&search_location=uk"
}
Search behaviour
Price filters need a category.
min_price / max_price have no effect
when category is all — pick a category (for-sale, cars, bicycles …)
to filter by price.Gumtree pins up to 5 paid featured ads (
is_featured: true) above the
chosen sort order. Skip them if you need a strict date or price ordering.A result set holds at most 50 pages (~1,500 listings), whatever
total_results reports. To collect more, narrow the search — by
sub-category (category_facets), location and distance, price band, or
filters.Postcode radius
Pass a full UK postcode aslocation with a distance in miles:
curl "https://scrapebadger.com/v1/gumtree/search?query=sofa&category=for-sale&location=SW1A%201AA&distance=2" \
-H "X-API-Key: YOUR_API_KEY"
Category filters
curl "https://scrapebadger.com/v1/gumtree/search?category=cars&filters=vehicle_make:bmw,vehicle_fuel_type:petrol,min_vehicle_mileage:10000" \
-H "X-API-Key: YOUR_API_KEY"
type: enum_range) take min_ / max_ + the filter key, e.g.
min_vehicle_mileage:10000,max_vehicle_mileage:50000. List every key and value
for a category with
/search/filters.
Errors
| Status | Meaning |
|---|---|
400 | Malformed filters value — expected comma-separated key:value pairs. |
422 | Invalid parameter (e.g. page above 50), or Gumtree temporarily refused the request. Not billed — retry the latter shortly. |

