Gumtree UK Scraper - Classified Ads & Listings
Pricing
from $1.54 / 1,000 listings
Gumtree UK Scraper - Classified Ads & Listings
Scrape Gumtree UK ads by keyword, category, town or postcode, or a pasted Gumtree link. Each row has the ad id, title, price, category, town, photos and link, plus full text, attributes, seller and posted date if you open listing pages. Phone numbers and emails removed. $1.60 per 1,000 listings.
Pricing
from $1.54 / 1,000 listings
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Search Gumtree UK by keyword, category, town or postcode and get one row per ad: id, title, price, category, place, photos and link, with phone numbers and email addresses stripped out of every field before a row is written.
Search results carry no posted date and only a snippet of the ad text. If you need either, turn on Open each listing page, which makes a run roughly ten times slower.
| Input | A search term, a category, UK towns or postcodes, or Gumtree search URLs |
| Output | One row per ad: title, price, category, town, snippet, photos and link; full text, attributes, seller and posted date with listing pages on |
| Ceiling | 50,000 listings per run, and 100 results pages per search |
| Account needed | None |
| Price | $1.60 per 1,000 listings on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 3,100 |
🔍 What Gumtree UK Scraper does
It reads the pages Gumtree shows a signed-out visitor, in one of two modes.
Search results only, the default, is fast: about 25 ads per page load. You get the id, title, price, town, the snippet Gumtree shows on the card, the thumbnail, the photo count and the link. On cars, vans and motorbikes the card also carries year, mileage, fuel, engine size and private or trade.
Open each listing page adds what only exists on the ad itself: the full text, the attribute table, seller type and name, the posted date, every photo and, on property ads, the postcode and map coordinates. A 50-listing run took 51 seconds with it on and about 4 with it off. Leave it off to watch a category for new ads, turn it on to build a dataset.
Sellers put their number and email in the ad body all the time, often disguised:
name (at) example dot com[removed]. It errs on the side
of removing too much. Prices, years, mileages, postcodes and ad ids are left alone. An audit of 451
delivered rows found no contact detail left, and the run log says how many it removed.
Paid "Featured" cards repeat at the top of every results page, so they are skipped unless you ask for them, and an ad is never returned twice in a run.
📋 What data you get from each Gumtree ad
| What you get | Field |
|---|---|
| Ad id and link | listingId, url |
| Title, price as a number and as shown, currency | title, price, priceText, currency |
| The card snippet, or the full text with listing pages on | description, descriptionIsTruncated |
| Category slug, name and breadcrumb | categorySlug, categoryName, categoryPath |
| Place: town, postcode parts and coordinates | location, postcode, postcodeOutward, postcodeArea, latitude, longitude |
| The seller and the item's condition | sellerType, sellerName, condition |
| When it was posted, and when it expires | postedAt, postedAtIsApproximate, postedText, expiresAt |
| The category's own details: mileage, bedrooms, breed, salary | attributes |
| Photos | images, imageCount |
| Paid placement flag | isFeatured |
| Where the row came from | searchUrl, searchPage, source, pageType, detailError |
▶️ How to scrape Gumtree UK ads
- Open Gumtree UK Scraper and click Try for free.
- Fill in Search terms and Location, or paste addresses into Gumtree search URLs.
- Pick a Category if you want a price band or Posted by to narrow the search itself.
- Set Maximum listings, and turn on Open each listing page if you need dates and the full text.
- Click Start, then download the dataset as JSON, CSV or Excel.
The form arrives with sofa, london and 100 already filled in, so a run started without editing it
is a real search. With nothing usable to search, the run writes one free sample row and stops.
💰 How much does it cost to scrape Gumtree UK ads?
$1.60 per 1,000 listings on the Free plan. Paid plans pay a little less: $1.58 on Starter, $1.56 on Scale and $1.54 on Business. On the free plan, the $5 Apify gives you each month covers about 3,100 listings.
Not charged: the sample row, diagnostic rows, the Featured cards that are skipped, rows outside the
price band you asked for, and repeats. Opening listing pages adds time, not charge. maxItems is the
most listings a run can charge for.
📥 What you give it
{"query": "ford focus","location": ["leeds"],"category": ["cars"],"maxItems": 200,"distanceMiles": 30,"sort": "date","sellerType": "private","fetchDetails": true}
Or paste URLs and skip the form: {"searchUrls": ["https://www.gumtree.com/cars-vans-motorbikes/cars/uk/leeds"]}.
Both the /search?... form and the browse path work.
| Field | Default | What it is |
|---|---|---|
query | none | Keywords such as ford focus or 2 bed flat. Empty takes everything in the category. |
location | the whole UK | Towns, cities, counties or postcodes: london, leeds, west-midlands, OL8 3TS. Several run the same search in several places. |
category | all | A section (cars-vans-motorbikes, for-sale, flats-houses, pets, jobs, community, business-services), a leaf slug (cars, property-to-rent, dogs, phones) or a plain label like Cars or Flats to rent. 115 leaf categories are recognised. |
searchUrls | none | Gumtree search or browse URLs. Filters in the URL are kept, and anything set in the form overrides them. |
maxItems | 100 | 1 to 50,000 listings across every search. |
fetchDetails | false | Open each listing page for the full record. One extra page load per listing. |
sort | relevance | relevance, date, price-low or price-high. |
distanceMiles | Gumtree's default | 0 to 500 miles around the location. Gumtree's own radius is small, so widening it is usually the quickest way to more results. |
minPrice, maxPrice | none | A price band in pounds. |
sellerType | any | any, private or trade. |
includeFeatured | false | Keep the paid "Featured" cards, if you are tracking paid placements. |
proxyConfiguration | none | Optional. Only for sending the requests through servers of your own, which are used exactly as given. |
📤 What you get back
A real row from a run on 30 September 2026, in the default mode, with the description cut short:
{"listingId": "1515177455","title": "Marks & Spencer Cream Two-Seater Sofa","price": 0,"priceText": "FREE","currency": "GBP","description": "Marks & Spencer two-seater sofa in cream fabric. 193cm long x 100cm deep\nStill functional and comfortable, good for a project or spare room. \nRear cor...","descriptionIsTruncated": true,"categorySlug": "sofas-couches","categoryName": null,"categoryPath": null,"location": "Banstead, Surrey","postcode": null,"postcodeArea": null,"postcodeOutward": null,"latitude": null,"longitude": null,"sellerType": null,"sellerName": null,"condition": null,"postedAt": null,"postedText": null,"attributes": {},"images": ["https://img.gumtree.com/ePR8PyKf84wPHx7_RYmEag/4c196a6991b94dbfb3_991a3c916820/86"],"imageCount": 10,"isFeatured": false,"url": "https://www.gumtree.com/p/sofas-couches/marks-spencer-cream-two-seater-sofa/1515177455","searchUrl": "https://www.gumtree.com/search?search_location=london&q=sofa&distance=30","searchPage": 1,"scrapedAt": "2026-09-30T02:27:39.016Z","source": "search"}
| Field | How to read it |
|---|---|
price, priceText | price is a number in pounds: 0 for a free item, null for jobs and "please contact" ads. priceText is as shown, such as £600pm or FREE. |
description, descriptionIsTruncated | The card snippet in search mode, the full text with fetchDetails. true means you have the snippet. |
categoryName, categoryPath | Gumtree's breadcrumb, which only comes from the listing page. |
postcode, latitude, longitude | Coordinates come on property ads, and a postcode appears where the ad or the agent gives one. |
sellerType | private, trade, agency or landlord. On motors it comes from the card, elsewhere from the listing page. |
postedAt, postedAtIsApproximate | Listing page only. Where Gumtree shows an age such as "72 days ago", postedAt is worked out from it and postedAtIsApproximate is true. |
images, imageCount | One thumbnail in search mode, the full set with fetchDetails. imageCount is the photo count either way. |
source, pageType, detailError | search or search+listing, which kind of listing page it was, and why a page could not be opened. That row keeps its search-result fields. |
🧾 Reading the output
| Row | How to spot it | Billed |
|---|---|---|
| A listing | No _sample and no _diagnostic field | yes |
| The sample row | _sample: true and charged: false, only when there was nothing usable to search | no |
| A diagnostic | _diagnostic: true, ok: false, charged: false and an errorCode | no |
Real listings carry neither ok nor charged, while the sample row carries ok: true, so filtering
on ok does not work. Drop rows with _sample or _diagnostic and what is left is the listings you
paid for.
errorCode | What it means |
|---|---|
NO_RESULTS | Gumtree has no ads for that search. It answers an unknown town with zero ads rather than an error, so check the spelling. |
NO_NEW_RESULTS | The search only turned up ads an earlier search in the same run had already returned. |
END_OF_RESULTS | Fewer listings than maxItems came back because Gumtree had no more new ads, or a search reached page 100. listingsDelivered and searches say how many each search found. |
BAD_INPUT | A category that is not recognised, or a URL that is not a Gumtree one. |
REQUEST_FAILED | A results page did not get through. The row names the search and the page, that search stops there, and the others carry on. |
NOT_SERVED | This listing was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED or BOT_CHECK. |
TIME_LIMIT | The run reached its time limit before it finished. The listings before it are delivered and charged, and listingsDelivered says how many. Give the run more time to get the rest. The run ends as failed only when the time limit stopped it before any listing came back. |
💡 What people use it for
- Watching a category for new ads:
sortset todate, a smallmaxItems, a schedule, andlistingIdto skip what you already have. - Checking what the thing you are about to sell is listed for nearby.
- Rental listings with postcodes and coordinates, from the property section with
fetchDetailson. - Seeing which dealers pay for Featured placements, with
includeFeatured.
🚧 What it does not do
- No posted date in search mode. Gumtree does not put one on the cards. Sorting by
datestill returns ads in date order. - Some dates are approximate. Motors ads and many for-sale ads show an age, not a date, and those rows say so.
- A price band only narrows the search inside a category. On an all-category search Gumtree ignores it, so the out-of-band rows are dropped here, uncharged, and you get fewer rows per page.
sellerTypeonly works where Gumtree has both, such as Cars, Vans and Property. An all-category search ignores it.- Any sort but relevance narrows what Gumtree serves. "Sofa" in London reported about 8,900 ads by relevance and about 2,700 by date.
- About 25 new ads a page. Featured cards are skipped and some ads repeat between pages, so 1,000 listings take about 45 page loads. One search stops at page 100: past 2,000, split it by town, category or price band.
- Postcodes are patchy. Property ads carry coordinates, but a postcode only when the agent filled one in. Other sections give the town and area and nothing more precise.
- Jobs have no price. Pay turns up in
attributeswhen the advertiser wrote it. - No seller phone or email, and nothing behind Gumtree's reveal-number button. To contact a seller, open the listing and use Gumtree's own message button.
- Gumtree UK only. Not Gumtree Australia or South Africa.
- It is not an official Gumtree tool. Dami's Studio is independent and is not affiliated with or endorsed by Gumtree, or by any other company named on this page.
🧭 Which classifieds scraper do you need?
| If you want | Use |
|---|---|
| Gumtree UK ads by keyword, category, town or postcode | This one |
| Brazilian classified ads from OLX | OLX Brazil Scraper |
| Russian classified ads from Avito | Avito Listings Scraper |
| Israeli classified ads from Yad2 | Yad2 Scraper |
❓ Questions people ask
Do I need a Gumtree account or an API key?
No. It reads the public pages a signed-out visitor sees.
How do I get the full ad text instead of the snippet?
Turn on fetchDetails. The full text only exists on the listing page.
Why did my Gumtree search come back empty?
Gumtree answers a town it does not know with zero ads rather than an error, so check the spelling of
location first, and try a wider distanceMiles.
Why does postedAt carry postedAtIsApproximate: true?
The ad showed an age like "1 day ago", so the timestamp was worked out from the moment of the run. Trust it to the unit Gumtree showed.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made code
for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/gumtree-uk-scraper. Either way the run
happens on your Apify account at the same price.
Is it legal to keep Gumtree data?
These are public pages, and contact details are removed rather than collected. If you keep anything that identifies a person, that is your processing to justify under UK GDPR. Apify's write-up on the legality of web scraping is a good start, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the input you used, the run ID and the errorCode on
any diagnostic row.