Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Gumtree UK Scraper icon

Gumtree UK Scraper

Extract Gumtree UK listings: price, category, town, postcode, seller type, posted date, photos and full ad text. No login needed.

53 runs on Apify $0.0016 per listing ($1.6 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust query, location, category (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0016 per listing = $1.6 per 1,000

You are charged forWhenPrice
Listing returnedOne classified listing returned in the dataset. Diagnostic rows and the labelled sample row are not charged.$0.0016

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.

Inputs

FieldWhat it doesType
queryWhat to look for, e.g. "ford focus", "sofa", "2 bed flat". Leave it empty to take everything in the category you pick.string
locationA UK town, city, county or postcode — "london", "leeds", "west-midlands", "OL8 3TS". Use "uk" for the whole country. Add several to run the same search in several places. Gumtree answers an unknown place with zero ads rather than an error, so a typo shows up as an empty run.array
categoryOptional. A section ("cars-vans-motorbikes", "for-sale", "flats-houses", "pets", "jobs", "community", "business-services"), a leaf category ("cars", "property-to-rent", "dogs", "phones", "home-garden", "video-games-consoles"), or a plain label like "Cars" or "Flats to rent". 115 leaf categories are recognised. Leave empty to search everything.array
searchUrlsOptional. Paste Gumtree search or browse URLs instead of filling the fields above — https://www.gumtree.com/search?search_category=cars&search_location=leeds or https://www.gumtree.com/cars-vans-motorbikes/cars/uk/leeds. Filters already in the URL are kept; anything you set above overrides them.array
maxItemsHow many listings to return in total across every search (1-50000). One returned listing is one charged result. Sample and diagnostic rows are never charged.integer
fetchDetailsAdds the full ad text, the attribute table (mileage, bedrooms, breed, hours), seller type, exact posted date, the full photo set and — on property ads — the postcode and map coordinates. Costs one extra page load per listing, so a 100-listing run takes roughly 90 seconds instead of 10.boolean
sortNewest first is the one to use for monitoring. Note that asking Gumtree for any order other than relevance also narrows the result set it will serve.string
distanceMilesOptional. How far around the location to search. Gumtree's own default radius is small, so widening this is usually the fastest way to get more results.integer
minPriceOptional. Gumtree only applies a price range when a category is set — on an all-category keyword search it accepts the range and ignores it, so this Actor drops the out-of-range rows itself and does not charge for them.integer
maxPriceOptional upper bound. Same caveat as the minimum.integer
sellerTypePrivate sellers or trade sellers only. Gumtree applies this inside Cars, Vans, Property and the other sections that have both; it has no effect on an all-category search.string
includeFeaturedGumtree pins a handful of paid "Featured" cards to the top of every page of a search, so the same advert comes back on page 1, page 2 and page 3. They are skipped by default and not charged. Turn this on if you are tracking paid placements.boolean

What you get

A structured dataset — each result includes fields like:

listingIdtitlepricepriceTextlocationpostcodeAreacategoryNamesellerTypepostedAtimageCounturl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Gumtree UK Scraper: classified ads by keyword, category, town or postcode, with contact details removed

Give it a search term, a category, UK towns or postcodes, or a Gumtree URL, and it returns one row per ad with the id, title, price, category, place, photos and link. Phone numbers and email addresses are stripped out of every field before a row is written. Search results carry no posted date and only a snippet of the ad text, so if you need either, turn on Open each listing page, which makes a run roughly ten times slower.

InputA search term, a category, UK towns or postcodes, or Gumtree search URLs
OutputOne row per ad
Ceiling50,000 listings per run, at 30 ads per results page
Account neededNone
Price$1.60 per 1,000 listings, flat on every plan

🔍 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 30 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, or a mobile broken up with spaces. Every string is scanned before it is written, and anything that looks like a phone number or an email address becomes [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 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. With nothing usable to search, the run writes one free sample row and stops.

FieldWhen left outWhat it is
querynoneKeywords such as ford focus or 2 bed flat. Empty takes everything in the category.
locationthe whole UKTowns, cities, counties or postcodes: london, leeds, west-midlands, OL8 3TS. Several run the same search in several places.
categoryallA 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.
searchUrlsnoneGumtree search or browse URLs. Filters in the URL are kept, and anything set in the form overrides them.
maxItems1001 to 50,000 listings across every search.
fetchDetailsoffOpen each listing page for the full record. One extra page load per listing.
sortrelevancerelevance, date, price-low or price-high.
distanceMilesGumtree's default0 to 500 miles around the location. Gumtree's own radius is small, so widening it is usually the quickest way to more results.
minPrice, maxPricenoneA price band in pounds.
sellerTypeanyany, private or trade.
includeFeaturedoffKeep the paid "Featured" cards, if you are tracking paid placements.
proxyConfigurationnot neededOptional. 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"
}
FieldWhat it is
listingId, urlGumtree's own ad id and the listing link.
title, price, priceText, currencyprice 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, descriptionIsTruncatedThe card snippet in search mode, the full text with fetchDetails. true means you have the snippet.
categorySlug, categoryName, categoryPathThe slug from the link, and Gumtree's breadcrumb, which only comes from the listing page.
location, postcode, postcodeOutward, postcodeArea, latitude, longitudeTown and county as Gumtree prints them. Coordinates come on property ads, and a postcode appears where the ad or the agent gives one.
sellerType, sellerName, conditionprivate, trade, agency or landlord, the seller's display name, and new or used. On motors the seller type comes from the card, elsewhere from the listing page.
postedAt, postedAtIsApproximate, postedText, expiresAtListing page only. Where Gumtree shows an age such as "72 days ago", postedAt is worked out from it and postedAtIsApproximate is true. expiresAt appears only when Gumtree gives one.
attributesWhatever the category has: mileage, bedrooms, breed, hours, salary.
images, imageCountOne thumbnail in search mode, the full set with fetchDetails. imageCount is the photo count either way.
isFeaturedtrue on a paid placement.
searchUrl, searchPage, scrapedAt, sourceThe search and page the row came from, when it was read, and search or search+listing.
pageType, detailErrorListing pass only: 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

RowHow to spot itCharged
A listingno _sample and no _diagnostic fieldyes
The sample row_sample: true and charged: false. Only when there was nothing usable to searchno
A diagnostic_diagnostic: true, ok: false, charged: false, and an errorCodeno

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.

errorCodeWhat it means
NO_RESULTSGumtree has no ads for that search. It answers an unknown town with zero ads rather than an error, so check the spelling.
NO_NEW_RESULTSThe search only turned up ads an earlier search in the same run had already returned.
BAD_INPUTA category that is not recognised, or a URL that is not a Gumtree one.
BLOCKED, BOT_CHECK, REQUEST_FAILEDA results page did not get through. The row names the search and the page, that search stops there, and the others carry on.

▶️ How to run it

1. Open Gumtree UK Scraper and click Try for free. 2. Fill in Search terms and Location, or paste addresses into Gumtree search URLs. 3. Pick a Category if you want a price band or Posted by to narrow the search itself. 4. Set Maximum listings, and turn on Open each listing page if you need dates and the full text. 5. 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.

💰 How much does it cost?

$1.60 per 1,000 listings, flat on every Apify plan.

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 people use it for

  • Watching a category for new ads: sort set to date, a small maxItems, a schedule, and listingId to 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 fetchDetails on.
  • 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 date still 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.

  • sellerType only 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.

  • 30 ads a page, fixed. A 1,000-listing pull is about 34 page loads, so for tens of thousands, split the search 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 attributes when 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.

🧭 Which classifieds scraper do you need?

If you wantUse
Gumtree UK ads by keyword, category, town or postcodeThis one
Craigslist listings by city and categoryCraigslist Scraper
What things actually sold for on eBayeBay Sold Listings Scraper
Classified ads in Spain from MilanunciosMilanuncios Scraper
Classified ads in Brazil from OLXOLX Brazil 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 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.

Is it legal to keep this 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 and the run ID, and the errorCode on any diagnostic row.