Turn Gumtree UK adverts into JSON with one call
The Gumtree UK API returns classifieds listings from one of the UK's largest classifieds sites as clean JSON.
6 active endpoints. Every call is 1 credit.
- POST/gumtree/v1/search
- POST/gumtree/v1/listing_detail
- POST/gumtree/v1/similar
- POST/gumtree/v1/categories
- POST/gumtree/v1/filters
- POST/gumtree/v1/suggestions
What Gumtree endpoints does ReefAPI ship?
6 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Gumtree API
3 of 6 endpoints, ready to run
The advert feed: title, a numeric price with its currency, location, three levels of category id, photos and when it was posted.
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the Gumtree API works
Gumtree is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 185 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Narrow by category, then walk the pages
Gumtree caps how far a single query can be paged, so the shape of a good run is many narrow queries rather than one wide one. The category tree is what makes them narrow.
{"market": "uk"}Take a subcategory slug. Seven top-level categories, each with its own children. Needed once, not per run.
{"market": "uk", "category": <slug>, "location": "london", "max_pages": 5}One call walks several pages. The response tells you how many it actually got and why it stopped.
Two credits, and one search call covers several pages rather than one. Every endpoint here costs the same.
curl -X POST https://api.reefapi.com/gumtree/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"market":"uk","category":"cars-vans-motorbikes","location":"london","max_pages":1}'{
"ok": true,
"data": { … },
"meta": {
"api": "gumtree",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Gumtree UK category slugs that search actually accepts
The category parameter takes a Gumtree slug, but not every slug shape works. The seven top-level trees work as written, and so do bare leaf slugs such as cars or property-to-rent. The path form that the categories action prints for sub-categories (cars-vans-motorbikes/cars) gets URL-encoded into the query string and Gumtree answers it with a 404. Counts below are live ad totals for the London area, measured 2026-08-27.
| Slug | Tree | Ads in London | Notes |
|---|---|---|---|
| for-sale | For Sale | 222,219 | Largest tree; leaf slug baby-kids-stuff returned 17,857 |
| business-services | Services | 28,130 | Trade-heavy; seller_type is populated here |
| cars-vans-motorbikes | Motors | 22,433 | Leaf slug cars returned 9,451, motors-parts 5,302 |
| flats-houses | Property | 15,546 | Leaf slug property-to-rent returned 4,974 |
| jobs | Jobs | 10,382 | seller_type came back null on all 30 rows sampled |
| pets | Pets | 1,797 | Leaf slug dogs returned 131 |
| community | Community | 504 | Smallest tree |
Sub-category slugs in path form (for-sale/baby-kids-stuff, pets/pets-for-sale/dogs) return NOT_FOUND with the upstream 404 URL in the message. Use the leaf slug on its own, or read the exact slugs Gumtree will accept, with live counts, from the filters action: for Motors in London it returned cars 9,450, motors-parts 5,302, motors-accessories 4,649, vans 1,366, motorbikes-scooters 1,313 and other-vehicles 243.
One market, honest limits, and a price you can add up
Gumtree is the simplest country story in this batch and the most explicit about its own ceiling. Both of those are worth knowing before you plan a run.
The United Kingdom, gumtree.com, covering motors, property, jobs, for-sale, pets and the rest of the tree.
gumtree.com.au is region-locked to connections inside Australia, so this API does not serve it. The market parameter accepts the value and the call fails with a clear reason rather than pretending. We would rather say that here than let you find out mid-integration.
Sterling, and unlike the car listings in this batch you get a real number: a numeric amount and a currency code alongside the display string. No parsing, no locale guessing.
Each advert carries a leaf category id and its two parent levels. That means you can group results by department without a second lookup — and it means the id you filter on and the id on the row are not necessarily the same one.
Rows carry both the relative text Gumtree displays and a real epoch timestamp. Use the timestamp; the text is written for a human reading the page today.
A query can be paged about fifty pages deep, which is roughly fifteen hundred adverts, while the reported result count is the true market total and is often far larger. The response carries the cap flag and a note explaining it, so you can detect the ceiling in code rather than discovering it in a chart.
Asking for ten pages in one call did not always return ten. In a measured run it came back with five pages' worth and a stop reason saying it had been cut short. The rows it did return are real; the count is not the count you asked for, and the field that tells you is in every response.
What people build with Gumtree
The jobs this data is most often used for.
endpoints
credit per call
Price-intelligence teams call search to track second-hand prices across Gumtree categories.
Resale and arbitrage tools use similar to find comparable listings for a product.
Market analysts use categories and filters to size supply in a UK classifieds segment.
What Gumtree data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 185 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/gumtree/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"market":"uk","category":"cars-vans-motorbikes","location":"london","max_pages":1}'import requests
r = requests.post(
"https://api.reefapi.com/gumtree/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"market": "uk",
"category": "cars-vans-motorbikes",
"location": "london",
"max_pages": 1
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Gumtree.
Get a free key →Does this cover Gumtree UK, Gumtree Australia, or both?▾
UK only. market defaults to uk (gumtree.com) and that is the marketplace every action reads. Passing market=au returns a typed MARKET_UNAVAILABLE error rather than an empty list, because gumtree.com.au serves a bare 403 to non-Australian connections. Every price therefore comes back with price_currency GBP.
Is the Gumtree price a number or free text?▾
Both, in two separate fields. price is Gumtree's own formatted string, for example £2,500.00, and price_amount is the parsed float 2500.0. Ads with no price return price as an empty string and price_amount as null, which is the normal case in Jobs: every row in a Manchester jobs search came back that way. Filter on price_amount, display price.
What does a Gumtree ad id look like and where does it come from?▾
It is the digits at the end of an advert URL, for example 1801851557 in /p/toyota/toyota-prius-hatchback-2011.../1801851557. search returns it as an integer in items[].id, while listing_detail and similar take it as a string in id. Ids are not zoned by category: a Motors ad measured 1801851557 and a Jobs ad 5418826988, both ten digits.
Can I tell a private seller from a dealer?▾
In Motors and For Sale, yes: seller_type comes back as Private or Trade on each card, and the seller_type parameter narrows to one of them. In Jobs it is null on every row, because Gumtree does not classify job posters that way. The seller_type filter still changes the result set there, so check the field rather than assuming the filter applied.
How deep can I page a Gumtree search?▾
About 1,500 ads per query. Gumtree serves roughly 30 ads per page and stops at 50 pages, so max_pages is capped at 50 and the response sets result_cap_hit true. result_count is Gumtree's own market total and is far larger than what you can page to: 22,433 for Motors in London against a 1,500-ad ceiling. Split by leaf category, area or price band to get past it.
What location values work, and how does the distance filter behave?▾
A town, an area or a postcode all resolve: london, manchester and SW1A were all accepted, and location_title echoes what Gumtree decided, for example SW1A - Within 5 miles. distance takes miles and needs location. The filters action returns the exact area facets with counts for your category, for example east-london 6,733 and north-west-london 5,627 under Motors, which is a more reliable way to slice a city than a radius.
How is this different from the autotrader or olx engines?▾
Gumtree is a general classifieds site, so one response mixes trees and the per-ad attributes[] array changes shape with the category. A car search row carried 40 attributes including vehicle_estimated_mileage 180256 and vehicle_cap_code, while a job row carried 12 including job_hours Part Time. autotrader is UK cars only and keeps mileage in badges; here it is an attribute you read by key. Gumtree also publishes a postcode and coordinates on listing_detail, HA98PB at 51.5711 / -0.294532 on the measured ad.
What does the seller block on listing_detail contain?▾
A public profile, not contact details. Measured on ad 1801851557: name salim, a hashed public_id, posting_since 15+ years, total_ads 10, ads_posted_last_year 5, last_active as an ISO timestamp, and ads_by_category counting Motors 5, For Sale 2, Property 2 and Services 1. Phone and email that sellers paste into free text are redacted unless you set include_pii true; the display name is always kept.
What is the Gumtree API?▾
Gumtree API is a ReefAPI endpoint group for uk classifieds listings with full details. It returns live JSON through POST requests under /gumtree/v1.
Is the Gumtree API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Gumtree calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Gumtree login or account?▾
No login to Gumtree is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Gumtree data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Gumtree API use?▾
Gumtree actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Gumtree from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call gumtree actions with the same key, credit pool and JSON envelope used by normal REST requests.
37 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Gumtree, you are one call away from the rest of the category — no second contract, no second integration.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 184 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-08-27.