Gumtree Scraper: UK, Australia, South Africa Ads avatar

Gumtree Scraper: UK, Australia, South Africa Ads

Pricing

from $0.76 / 1,000 listings

Go to Apify Store
Gumtree Scraper: UK, Australia, South Africa Ads

Gumtree Scraper: UK, Australia, South Africa Ads

Gumtree UK, Australia and South Africa classifieds in one run: keywords, categories, places, car and property filters, links, every page. Rows hold price, monthly rent (UK, AU), posted time, UK postcode area, seller type, make, mileage; details add full text, car checks. Monitor, pay per ad, API.

Pricing

from $0.76 / 1,000 listings

Rating

0.0

(0)

Developer

Automation Craft

Automation Craft

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Gumtree Scraper: UK, Australia, South Africa Ads

Gumtree scraper for all three Gumtree sites: gumtree.com (UK), gumtree.com.au (Australia) and gumtree.co.za (South Africa). Search by keyword, category, place, make and the site's own filters, or paste Gumtree search links and ad links, and get one row per ad: title, price as a number and as shown, the rent per month (UK and Australia), the exact posted time (UK and South Africa), place and UK postcode district, category, photos, promotion flags, seller type and car data as columns (make, model, year, mileage, fuel, transmission, body, colour; Australia with details). Turn on details for the full description, the category path, every attribute, all photos, the seller's facts, view counts (Australia, South Africa) and car history check flags. Every page of a search is read, newest first, past the 1,250 ads Gumtree UK serves per search. A free price summary comes with every search. A monitor delivers only new ads, and can track price changes. No login, no cookies, no captcha.

Who uses it: car dealers and traders watching private car ads, resellers and bargain hunters following new ads, letting agents and analysts comparing rents and prices by place, and teams feeding Gumtree ads into their sheets, apps or AI agents.

Quick start

  1. Open the Input tab and pick the Gumtree site: uk (the default), au or za.
  2. Fill Categories (cars, sofas, property-to-rent, jobs, dogs; Australia Cars, Vans & Utes; South Africa Cars & Bakkies), Places (manchester, London, west-yorkshire; Australia Bondi, Sydney Region; South Africa Benoni, Cape Town) and Keywords if you like. Every category, place, keyword and make makes its own search.
  3. Or paste Gumtree search links into Search links (each keeps its own filters) or ad links into Ad links.
  4. Add filters: price, seller type (private or trade), condition, radius, make, model, year, mileage, fuel, gearbox, body, colour, bedrooms, any other filter the search offers, posted within the last N hours, words that must or must not appear.
  5. Set Maximum ads and click Start. Download the rows as JSON, CSV or Excel, or read them through the Apify API.

For new ads only, give the run a Monitor name and schedule it: each later run delivers only the ads this monitor has not delivered before.

What you get

One row per ad (type: "listing"), one coverage row per search (type: "search") with its price summary, free status rows for anything that could not be delivered (type: "status") and a run summary (type: "summary"). The dataset's Ads view shows the most useful columns.

Fill rates below are measured on the platform runs of 2026-10-21 (build 0.1.2): 1,753 UK search rows from 12 runs, 55 Australian search rows from 3 runs, 800 South African search rows from 2 runs, and rows with details: 15 UK, 5 Australian, 13 South African.

FieldWhat it isFilled on (measured)
country, site, adId, url, titlethe site (uk, au, za), the ad's id and link, its titleevery row
price, priceText, currencythe price as a number and, UK and Australia, as the site shows it ("£2,200pm", "$660 Per Week"), GBP, AUD or ZARprice: UK 1,752 of 1,753, Australia 55 of 55, South Africa 705 of 800 (ads "on request" carry none); priceText: UK 1,752 of 1,753, Australia 55 of 55
pricePeriod, priceMonthlyUK and Australian rents: the period shown (week, month) and the rent per month (a weekly rent times 52 / 12); Gumtree South Africa shows no periodevery UK rent row (18 of 18); Australian rents from build 0.1.4 on
postedAt, postedAtPrecision, postedAtTextwhen the ad was posted: exact on the UK and in South Africa; Australia shows an age ("6 minutes ago", "Yesterday", a date), so its precision is minute, hour or daypostedAt and its precision every search row; postedAtText UK and Australia
categoryname, id and, with details, the category pathid every row; name UK every row, Australia and South Africa with details
locationUK: the place text and its id (area and sub area with details); Australia: suburb and state (postcode with details); South Africa: the place text and its ref (name and path with details)every row
postcodeDistrict, postcodeUK: the postcode district (M33, CA3) and, for business sellers or with personal data on, the full postcodedistrict 1,700 of 1,753 UK rows
image, images, imageCount, videosphoto links (never downloaded), how manyimageCount every row; photos UK 1,752 of 1,753, Australia 55 of 55; South Africa: links for business sellers or with personal data on (each South African photo link carries the seller's account id), the count every row
description, descriptionSourcethe search snippet, or with details the full descriptionevery row; full text every row with details
attributes, specs, featuresthe site's attributes (UK: every attribute key and value; Australia: the detail lines, with details every detail tab line, car specs and features)UK 1,752 of 1,753, Australia 55 of 55; South Africa with details (13 of 13); specs and features Australia with details (5 of 5)
vehiclemake, model, year, mileage and unit, fuel, transmission, body, colour (UK also engine size, doors, seats, derivative, power, mpg, CO2, insurance group)every car row: UK 503 of 503, Australian and South African car rows with details 18 of 18
vehicleCheckUK: whether the ad shows a vehicle history check (checked) and its flags (notCategoryAOrB, notCategoryCOrD, notCategorySOrN, imported, originalNumberPlate, originalColour); Australia: ppsr and autoRecordwith details: UK every row, flags on 9 of 10 car rows; Australia 5 of 5
sellertype (private or trade) and label; with details member since, rating (UK, South Africa), ads count (UK); business sellers' name, ids, phone (Australia), address and dealer licence (Australia). UK: seller.accountId identifies the account; seller.id is the site's own seller id, which a dealer group's branches can sharetype: UK when the category shows it (730 of 1,753), Australia 44 of 55, with details 32 of 33
views, chatCount, phoneRevealCount, favouriteCountAustralia and South Africa: views (with details); South Africa: chats and phone reveals; UK: favouritesviews every Australian and South African row with details (18 of 18); favourites every UK row
expiresAt, allowOffers, deliverySouth Africa: expiry, offers allowed, delivery optionsexpiry every South African row; offers 498 of 800; delivery 127 of 800
flags, promotionsUK: featured, urgent, premium, standout, bumped up, video, delivery; Australia: featured, top, premium, highlighted, gallery, urgent, video, and the promotion labelsflags every UK and Australian row; promotions Australia 44 of 55
change, possibleRepostOf, contentHashmonitor rows: the price change with the previous and first seen price and history, or an update; a possible repost; a hash of the ad's contentwith a monitor; the hash every row
detailsIncluded, source, searchKey, searchLabel, position, monitorName, deliveryId, scrapedAtwhether the record was read, which input and search delivered the row, its place in the searchevery row (searchKey, searchLabel and position on search rows, monitorName on monitor rows)

A UK car row with details (shortened; a business seller):

{
"type": "listing", "country": "uk", "adId": "1801369951",
"url": "https://www.gumtree.com/p/bmw/bmw-2-series-218d-m-sport-5dr-dct/1801369951",
"title": "BMW 2 SERIES 218d M Sport 5dr DCT", "price": 19950, "priceText": "£19,950.00", "currency": "GBP",
"postedAt": "2026-10-21T13:20:16.246Z", "postedAtPrecision": "exact",
"category": { "name": "BMW", "id": "10303", "path": ["Motors", "Cars", "BMW", "BMW 2 SERIES"] },
"location": { "text": "Carlisle, Cumbria", "area": "Cumbria", "subArea": "Carlisle" }, "postcodeDistrict": "CA3",
"imageCount": 51,
"vehicle": { "make": "BMW", "model": "2 SERIES", "year": 2022, "mileage": 31976, "mileageUnit": "miles", "fuelType": "Diesel",
"transmission": "Automatic", "bodyType": "Hatchback", "colour": "Blue", "engineSizeCc": 1995, "doors": 5 },
"seller": { "type": "trade", "name": "Lloyd BMW Carlisle", "memberSince": "5+ years", "proAccount": true },
"detailsIncluded": true, "source": "search", "searchLabel": "in Cars make BMW (Gumtree UK)"
}

A South African row with details (shortened; a private seller, personal data off):

{
"type": "listing", "country": "za", "adId": "ls263y876mj300m9fzb", "url": "https://www.gumtree.co.za/listing/ls263y876mj300m9fzb",
"title": "2006 Toyota Corolla Sedan", "price": 35000, "currency": "ZAR",
"postedAt": "2026-10-21T13:20:49.610Z", "expiresAt": "2026-11-20T13:20:49.610Z",
"location": { "text": "KwaZulu-Natal > Durban > North Beach", "name": "North Beach", "ref": "s27n7" },
"vehicle": { "make": "Toyota", "model": "Corolla", "year": 2006, "mileage": 296976, "mileageUnit": "km", "fuelType": "Petrol", "transmission": "Manual" },
"seller": { "type": "private", "name": null, "id": null, "memberSince": "2009-05-16T07:09:02.000Z", "verified": { "identity": false, "mobileNumber": true } },
"views": 7, "chatCount": 0, "phoneRevealCount": 5, "detailsIncluded": true
}

The coverage row of each search says how many ads the site counts (adsOnSite), how many slices and pages were read, how many ads were met, delivered, left out by a filter (filteredOutBy) or as paid placements (promotedLeftOut), the price summary, whether the search was read to its end (complete) and why it stopped (stoppedBy). From a real run (cars in Sydney Region, 40 ads asked):

{ "type": "search", "searchLabel": "in Cars, Vans & Utes at Sydney Region (Gumtree Australia)", "adsOnSite": 17755,
"pagesRead": 2, "distinctAdsMet": 68, "adsDelivered": 40, "promotedLeftOut": 12,
"priceSummary": { "count": 68, "currency": "AUD", "min": 3900, "p25": 11995, "median": 21935, "p75": 34995, "max": 69888, "mean": 25112.06 },
"complete": false, "stoppedBy": "maxItems" }

How much does it cost to scrape Gumtree?

You pay per event, with Apify's store discounts by plan:

EventFree planBronzeSilverGold
Listing (one ad row)$1.06 per 1,000$0.97 per 1,000$0.88 per 1,000$0.76 per 1,000
Listing details (an ad's full record read and merged)$1.60 per 1,000$1.45 per 1,000$1.30 per 1,000$1.15 per 1,000
Results page (monitor runs only, one search page read)$1.40 per 1,000$1.30 per 1,000$1.20 per 1,000$1.00 per 1,000
Actor start (once per run)$0.0065$0.0065$0.0065$0.0065

Platinum and Diamond plans pay the Gold price. The Actor start is a flat fee per run, with no plan discount.

The Store pricing card shows these same prices per 1,000 events: "$0.76 / 1,000" on the Listing row means one ad row costs $0.00076 on the Gold plan, less than a tenth of a cent.

  • Listing is charged once per ad delivered as a row, from a search or an ad link; in a monitor with Track price changes, also per ad delivered again because its price, title, photos or place changed (as Changes to deliver asks), per ad reported removed and per ad that reappeared.
  • Listing details is charged per delivered row whose full record was read and merged: every search row with Include details on, and every ad link row (an ad link is always read with its record).
  • Results page is charged only in a monitor run (Monitor name set): one per search page read, whatever it held, so a monitor pays for checking even on a day with nothing new. A page of 30 UK, 40 Australian or 25 South African ads. A read that failed or that the site did not apply is free. Runs without a monitor never pay it.
  • Never billed: repeats in the run, ads left out by a filter, paid placements left out, ads a monitor already delivered, ad links and search rows whose ad the site no longer shows or never had, changes Changes to deliver leaves out, invalid input, coverage rows with their price summary, status rows and the summary.
  • Example on the Bronze plan: 1,000 search rows cost $0.0065 (start) + 1,000 listings ($0.97) = $0.9765. On the Free plan the same run costs $1.0665, on the Gold plan $0.7665.
  • Example with details on the Gold plan: 100 ads cost $0.0065 + 100 listings ($0.076) + 100 listing details ($0.115) = $0.1975.
  • Example of 50 ad links on the Gold plan: $0.0065 + 50 listings ($0.038) + 50 listing details ($0.0575) = $0.102.
  • Example of a daily monitor on the Gold plan with 10 searches whose newest 100 ads are read (4 UK pages each) and 30 new ads: start ($0.0065) + 40 results pages ($0.04) + 30 listings ($0.0228) = $0.0693. A day with nothing new: $0.0465.
  • A run without a monitor that delivers nothing (a keyword with no ads, a filter no ad passes) pays only the start: $0.0065.

Input

SettingWhat it does
countryuk (gumtree.com, the default), au (gumtree.com.au) or za (gumtree.co.za): the site built searches read. Pasted links are read on their own site.
keywordsSearch words, each its own search.
categoriesCategories by the site's name or id: the UK's 1,729 categories (cars, sofas, Dogs), Australia's 593 (Cars, Vans & Utes, 18320) and South Africa's 608 (Cars & Bakkies, p6dnh). A name several categories carry is a free row naming them.
locationsUK: 3,615 places by name or slug (manchester, West Yorkshire, st-andrews-fife); Australia: suburbs and regions through the site's own place lookup (Bondi, Bondi 2026, Sydney Region); South Africa: towns and suburbs through the site's lookup (Benoni) or its place ref. A name several places carry is a free row naming them.
searchUrlsSearch links of the three sites, each with its own filters and sort; the Actor reads every page itself.
adUrlsAd links or ids (/p/... UK links, /s-ad/... Australian links, South African links ending in ls... or lr...), each read with its full record. A removed or unknown ad is a free row.
minPrice, maxPriceA price range in the site's currency, sent to the site and checked on every row. Gumtree UK filters rents per week, so a UK rent range is per week (a rent per month is compared as a week).
sellerType, conditions, radiusPrivate or trade sellers, item condition, a radius around the place (UK miles, Australia km; not offered by Gumtree South Africa).
makes, models, minYear, maxYear, minMileage, maxMileage, fuelTypes, transmissions, bodyTypes, coloursCar filters with a vehicle category; each make is its own search; models need one make.
minBedrooms, maxBedroomsProperty bedrooms (0 is a studio). Gumtree Australia and Gumtree South Africa offer "6 or more" (6+) as one value, so a maximum of 6 or more is a free row there (set no maximum, or one below 6).
attributeFiltersAny other filter a search offers, by the site's own name or label: {"Doors": ["5"], "Engine size": {"min": 1000}}. A filter or value the search does not offer is a free row listing those it does.
postedWithinHours, postedAfterOnly ads posted in the last N hours or since a day (UTC). A newest first search stops at the first page past it. Gumtree Australia shows an age, not a time ("6 hours ago", "Yesterday", a date): an Australian ad is kept only when everything its age can mean is inside the window ("6 hours ago" can be up to 7 hours old; a day is that day in any Australian time zone), so ads near the edge are left out free.
includeKeywords, requireAllKeywords, excludeKeywords, excludeAdIdsWords that must (one or all) or must not appear in the title or text (with details, the full description), and ads you already have.
sortnewest (the default), relevance (with keywords), priceLow, priceHigh, or nearest (Gumtree UK with a place).
maxItems, maxItemsPerSearch, maxPagesPerSearch, maxRowsPerSearchCaps per run (100 by default), per search, pages per search, and rows read per search (a monitor's window, 100 by default).
includeDetails, descriptionFormat, priceSummary, includePersonalDataThe full record (billed as Listing details), South Africa's HTML description as served, as text or as Markdown, the free price summary (on by default), the personal data switch (below).
monitorName, resetMonitor, trackChanges, changesToDeliver, markReposts, skipRepostsThe monitor (below).
proxyConfiguration, requestsPerSecond, maxConcurrency, maxRequestRetriesApify's datacenter proxy (the default, included in the price) or your own proxy links; the pace per site (0.5 requests a second by default).

A run reads at most 500 searches (categories times places times keywords times makes, plus search links).

Every page of a search, and past it

Gumtree UK serves 50 pages (1,250 organic ads) of one search, Australia 294 pages, South Africa 375 ads. When a search counts more ads than that and you ask for more, the Actor splits it into its child categories (and in South Africa its places), then into price bands, reads each slice newest first and delivers every ad once. The coverage row counts the slices and says whether they met every ad the site counted; ads without a price cannot fall into a price band and are named in the note. Measured: 1,023 dog ads of the UK's 1,504 in 8 slices before the run's charge limit; 800 South African phone ads in slices.

Gumtree UK's featured ads and Gumtree Australia's top ads stand in the first places of every results page. They are left out free and counted (promotedLeftOut); each such ad also stands at its own place in the newest first order, where it is delivered.

Monitor: only new ads, price changes and removed ads

Give the run a Monitor name and schedule it. Each run reads the newest Rows read per search of every search (100 by default), pays a Results page per page read, and delivers only the ads this monitor has not delivered before; an ad is billed once per monitor, and the ads it knows are free. With Track price changes, an ad met again with another price, title, photo count or place, as the search page shows them (ad links: as the ad's record shows them), is delivered again with change (the previous and first seen price, a short price history). Changes to deliver narrows that: all (the default), price changes only (up or down), or price drops only (a price lower than the last one this monitor delivered); a change not asked for is noted for the next run and free. With Changes to deliver at all, when every search of a tracking monitor was read to its end (each search's window holds all of it: raise Rows read per search) and no posted window or ad link is set, an ad the monitor delivered before and met nowhere has its record read: if the site no longer shows it (removed, sold or expired), it is reported once as a type: "removed" row (billed as a Listing); a record that is still live counts as seen (free). Met again later, a removed ad comes back as changeType: "reappeared". A run that misses more than half of what it tracks reports no removal (a fault at the source). Mark reposts flags a new ad whose title, price and seller match an ad the monitor delivered. Reset the monitor forgets what it delivered. One monitor name belongs to one set of settings. A monitor remembers up to 60,000 ads.

Personal data

With Include personal data off (the default), a private seller's name, seller and account ids, the masked phone the UK page shows, the full UK postcode (the district stays), the ad's map point, a private vehicle's identifiers (VIN, number plate) and, in South Africa, the photo links (Gumtree South Africa names every photo after the seller's account; the photo count stays) are null or left out. A seller whose kind the run cannot tell is treated as private. A business seller's name, phone, address and dealer licence are business data and always delivered. Titles and descriptions are delivered as the site serves them, so an ad's own text can name a person or a phone number. You are responsible for a lawful use of personal data (GDPR, POPIA, the Australian Privacy Act).

How long a run takes

The Actor reads each site at 0.5 requests a second by default (Requests per second), one page of 25 to 40 ads per request. Measured on the platform: 20 rows in 6 seconds; 1,023 UK rows in 117 seconds (54 requests); 800 South African rows in 102 seconds (50 requests); 8 UK car rows with details in 23 seconds. Gumtree UK sometimes asks an address to slow down (HTTP 471): the Actor waits 45 seconds on the same address, up to 6 times a run, and never switches to fresh addresses to get past it (5 rows with details took 107 seconds with two such waits). A site that stops answering stops its own searches with free rows; the other sites go on.

What this Actor does NOT do

  • No phone numbers behind a click. Gumtree UK and South Africa show a seller's number only after a login; this Actor never logs in. Australian business phones the record shows are delivered; the masked number the UK page shows comes for business sellers, and for private sellers only with personal data on.
  • No radius in South Africa. Gumtree South Africa's search offers no distance filter; use its places instead.
  • No email addresses. No row carries one; this Actor does not look them up elsewhere.
  • No ads without a price in price band slices. A search split into price bands cannot reach ads without a price; the coverage row says how many ads were met of how many the site counted.
  • No messages, no posting, no account data.
  • No photo downloads. Photo links only.
  • No change of fields the search page does not show. A search monitor with details compares the record when a change on the search page makes it read the record, never by reading every known ad's record on every run.
  • No unpaid crawling. A run stops with a status row when its unpaid work (pages whose ads were all filtered out, answers asked again) passes a small budget that grows with the events it bills: narrow the search or run it again.

API and integrations

Run it and get the rows in one call (replace YOUR_TOKEN):

curl -X POST "https://api.apify.com/v2/acts/automation_craft~gumtree-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"country": "uk", "categories": ["cars"], "locations": ["manchester"], "makes": ["BMW"], "maxPrice": 15000, "maxItems": 100}'

Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('automation_craft/gumtree-scraper').call({ country: 'au', categories: ['Cars, Vans & Utes'], locations: ['Sydney Region'], sellerType: 'private', includeDetails: true, maxItems: 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((x) => x.type === 'listing'));

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("automation_craft/gumtree-scraper").call(run_input={"country": "za", "categories": ["Cars & Bakkies"], "locations": ["Benoni"], "monitorName": "benoni-cars", "trackChanges": True})
ads = [x for x in client.dataset(run["defaultDatasetId"]).iterate_items() if x["type"] == "listing"]

The Actor also runs from n8n, Make and Zapier through their Apify integrations, from AI agents through Apify's MCP server, and on a schedule in the Apify Console.

FAQ

How do I scrape Gumtree listings?

Pick the country, a category, a place or a keyword, or paste a Gumtree search link, set Maximum ads and start the run: no code, no login and no proxy setup. Each ad comes as one row with its price, place, posted time, photos and car data, as JSON, CSV or Excel or through the Apify API.

Does it work for Gumtree Australia and Gumtree South Africa?

Yes. One Actor reads gumtree.com, gumtree.com.au and gumtree.co.za: set Gumtree site to au or za, or paste links of those sites. Categories, places and the sites' own filters work on all three; South Africa has no radius filter.

Is there a Gumtree API for listings?

Gumtree offers no public API for its listings. This Actor works as one: call it through the Apify API and read the rows back as JSON, in one call with run-sync-get-dataset-items.

Every ad the search counts, up to your Maximum ads: past the 1,250 ads Gumtree UK serves per search (375 in South Africa), the search is read in slices by category, place and price band, every ad delivered once. The coverage row says how many ads the site counts, how many were delivered and whether the search is complete.

How do I get alerts for new Gumtree ads?

Give the run a Monitor name and schedule it: each run delivers only the ads this monitor has not delivered before, and with Track price changes also price changes. A monitor run pays a Results page per search page it checks, so a day with nothing new costs the start fee plus those reads.

Why does this Actor run with limited permissions?

It needs nothing more: it writes only to its own run's dataset and key-value store, and a monitor keeps its memory in a named key-value store it creates itself. Limited permissions keep your other Apify data out of its reach.

Changelog

  • 0.1 (2026-10-21): first release: the UK, Australia and South Africa in one Actor; keywords, categories, places, makes, search and ad links; the sites' own filters, checked on every row; every page and slices past each site's reach; details with car data and view counts; a free price summary per search; a monitor with price change tracking and repost marks; private sellers' data behind the personal data switch.

More data tools by Automation Craft