Gumtree.com Scraper icon

Gumtree.com Scraper

Scrape Gumtree.com classifieds across motors, property, jobs, services, pets and goods for sale. Extract titles, descriptions, prices, photos,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Gumtree.com Scraper at a glance

Gumtree.com Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes id, title, price, price text and currency, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.30 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Ecommerce, Developer Tools, Real Estate
Region
Europe
Pricing
$1.80 per 1,000 results (Free plan), from $1.30 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
23 options
Run success
100.0% of completed public runs in the last 30 days

Scrape Gumtree.com classifieds across motors, property, jobs, services, pets and goods for sale. Extract titles, descriptions, prices, photos, locations, listing attributes, seller ratings, star distributions and reviews. Supports keyword, category, location and URL modes.

What Gumtree.com Scraper can do

  • Two ways in. Build a search from category, location and keyword filters, or paste a gumtree.com results URL you already refined in a browser, sub-categories and the sort, price, keyword, location, make and seller-type filters included.
  • Every vertical, one record shape. Motors, property, jobs, services, pets, community and the general for-sale categories all come back with the same clean fields.
  • Full listing detail on demand. Switch on the full description, map coordinates, postcode and the richer grouped attribute set per run, and pay only when a listing is actually opened.
  • Seller trust signals. Aggregate rating, the count per star, individual reviews and activity stats, captured from the listing page.
  • Optional seller phone reveal. Get the seller's full number instead of Gumtree's masked form, with a clear per-listing status whenever one is not available.
  • Fails loud, not quiet. A run that could not read the site stops with a clear message instead of reporting a false "no listings".

Choose what to collect

These inputs let you configure Gumtree.com Scraper - Classifieds, Prices, Sellers & Reviews. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestringSearch mode = build the query from the category / location / keyword filters below. URL mode = paste any gumtree.com results or listing URL you already refined in a browser (best for complex filters and sub-categories).

Choices: search, url

urlsarraygumtree.com results-page URLs (category, location, keyword search, page N, filters) or single listing URLs (/p//). Tip: open gumtree.com, choose a category + location + filters, then paste the resulting URL here. In URL mode all the filter fields below are ignored. Left untouched, this runs the 13 sample URLs shown (capped by Max items).
categorystringTop-level category to search. 'All categories' searches the for-sale goods; the other options cover Gumtree's main verticals. For a specific sub-category, use URL mode with a browsed URL.

Choices: all, motors, cars, property, jobs, services, pets, community

locationstringTown, city or region to search in (e.g. 'London', 'Manchester', 'Birmingham', 'West Midlands'). Leave empty to search all of the UK.
locationsarrayOptional extra towns, cities or regions. Each is searched separately (combined with Location above and with the keyword) and results are merged and de-duplicated. Ignored in URL mode.
keywordsstringFree-text keyword to search for (e.g. 'ford focus', 'iphone 15'). When set, the scraper runs a keyword search (optionally narrowed to the location above). Optional, leave empty to browse the whole category. API callers may also pass a list of keywords; each is searched separately and results are merged.
sortBystringHow to order results. 'date' is accepted as an alias of 'most_recent' and 'price' of 'price_asc'.

Choices: best_match, most_recent, price_asc, price_desc, nearest, date, price

Show 16 more inputs
More input fields
InputWhat it controls
minPriceintegerOnly return listings priced at or above this amount.
maxPriceintegerOnly return listings priced at or below this amount.
fetchDetailsbooleanAdds a detail-enrichment charge per enriched listing.
revealSellerPhonebooleanGumtree shows a seller's phone number only to signed-in visitors; to everyone else it is masked (e.g. 0770090XXXX). Turn this on and the scraper uses its own free Gumtree account so each listing carries the full number in seller.phone. It needs detail enrichment, which is switched on automatically, and adds no extra request or charge per listing. Every record also carries seller.phoneStatus, so a listing whose seller published no number is never confused with one that could not be read.
maxItemsintegerMaximum number of listings to return across the whole run. 0 = no limit (bounded by Max pages, at most 50 pages per search). Capped at 1,000,000.
maxPagesintegerHow many result pages to walk forward per search (30 listings per page). 0 = the standard 5 pages. Hard-capped at 50 pages per search; the site serves no more.
resumeFromRunIdstringPaste a previous run id or dataset id to continue an interrupted crawl: listings already collected there are skipped so this run returns only the delta. Leave empty for a normal run.
incrementalModebooleanFor a search you run on a schedule. When on, the actor remembers this search's previous run and classifies every listing as NEW / UPDATED / UNCHANGED / REAPPEARED / EXPIRED instead of returning the same listings every time. Default off (every run returns the full result set as today).
stateKeystringOptional label to isolate this search's incremental state, useful if you run the same filters under two different schedules. Leave empty to derive the state automatically from the mode/category/location/keyword/sort/price/URL filters and the detail-enrichment toggle, two different filter setups never share a baseline.
emitUnchangedbooleanWhen on, listings with no change since the previous incremental run are still returned (and billed) instead of being suppressed. Off by default so a recurring run bills only for what changed.
recheckUnchangedAdsbooleanWith incremental mode and detail enrichment on, a listing an earlier run already read in full and whose search card is unchanged is NOT opened again. When on, every listing page is opened every run, so changes that exist only on the listing page (description, attributes, seller rating) are detected. Slower and heavier per run. Off by default.
emitExpiredbooleanWhen on, listings that were tracked before but are no longer found are returned once (and billed) with changeType EXPIRED, then dropped from tracking. Only emitted after a run that reached the natural end of results for every search, a capped or time-limited run never emits EXPIRED rows, to avoid wrongly flagging a live listing as gone. Off by default.
ignoreFieldsForChangesarrayField names (or dotted nested paths such as seller.name) that never count as a change in incremental mode. They stay in the output but a listing whose only difference is in these fields is UNCHANGED and not listed in changedFields. Already ignored by default: scrapedAt, postedDate, the relative 'Posted' attribute and image (a derived copy of the first photo URL). Add favouriteCount or distance here if a changed watcher count should not mark a listing UPDATED.
mcpConnectorsarrayOptionally send scraped results into apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item; the full record stays in the dataset. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

idID (text)
titleTitle (text)
pricePrice (number)
priceTextPrice text (text)
currencyCurrency (text)
verticalVertical (text)
categoryNameCategory (text)
locationLocation (text)
postedDateListed (text)
imagePhoto (image)
descriptionDescription (detail enrichment) (text)
urlURL (link)
Show 10 more fields
changeTypeChange type (incremental mode) (text)
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
sellerSeller (rating, reviews) (object)
latitudeLatitude (number)
longitudeLongitude (number)
postcodePostcode (text)
areaArea (text)
attributesAttributes (array)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "id": "3300118842",
  "url": "https://www.gumtree.com/p/renault-clio/renault-clio-1-5-dci-dynamique/3300118842",
  "title": "Renault Clio 1.5 dCi Dynamique, 2017, Diesel",
  "price": 4250,
  "priceText": "£4,250",
  "currency": "GBP",
  "categoryId": "9311",
  "categoryName": "Cars",
  "vertical": "motors",
  "location": "Bristol",
  "distance": "5 miles",
  "postedDate": "3 days ago",
  "postedTimestamp": "2026-06-20T09:15:00Z",
  "shortDescription": "One owner, full service history, new MOT",
  "description": "Well looked after Renault Clio, one previous owner, full service history, two keys, recently serviced with a new MOT.",
  "images": [
    "https://img.gumtree.com/bbbbbbbb/5555555555_6666666666/max800",
    "https://img.gumtree.com/bbbbbbbb/7777777777_8888888888/max800"
  ],
  "imageCount": 9,
  "attributes": [
    {
      "name": "Make",
      "value": "Renault",
      "key": "vehicle_make"
    },
    {
      "name": "Year",
      "value": "2017",
      "key": "vehicle_registration_year"
    },
    {
      "name": "Mileage",
      "value": "58,400",
      "key": "vehicle_mileage",
      "unit": "miles"
    },
    {
      "name": "Fuel type",
      "value": "Diesel",
      "key": "vehicle_fuel_type"
    }
  ],
  "latitude": 51.4545,
  "longitude": -2.5879,
  "postcode": "BS1 4DJ",
  "detailFetched": true,
  "seller": {
    "name": "Tom H",
    "type": "private",
    "rating": 4.6,
    "reviewCount": 18,
    "ratingDistribution": {
      "1": 0,
      "2": 0,
      "3": 1,
      "4": 3,
      "5": 14
    },
    "reviews": [
      {
        "rating": 5,
        "text": "Straightforward sale, car as described.",
        "date": "2026-05-02"
      }
    ],
    "postingSince": "2 years",
    "totalAdvertCount": 5,
    "phone": "07700 900123",
    "phoneMasked": "0770090XXXX",
    "phoneStatus": "revealed"
  },
  "scrapedAt": "2026-06-23T10:00:00Z"
}

Ways to use this data

  • Car buyers and dealers: track new and price-changed listings for specific makes and models to spot underpriced cars quickly.
  • Letting agents and house hunters: monitor new property listings in target towns as soon as they appear.
  • Resellers and price researchers: benchmark second-hand prices for a product category across the whole UK.
  • Local trade and job seekers: watch new services and jobs postings in a region.
  • Buyer due diligence: check a seller's aggregate rating, star breakdown and review history before making contact.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Gumtree.com Scraper return?

The documented output for Gumtree.com Scraper includes id, title, price, price text, currency, vertical, category and location. Availability of each field depends on the source page and the selected mode.

How much does Gumtree.com Scraper cost?

It costs $1.80 per 1,000 results on the Apify Free plan and from $1.30 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed listings on a schedule?

Yes. Schedule the actor against the same search and turn on Incremental mode. Each run then classifies every listing as NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED against the previous run, and UNCHANGED listings are suppressed (and not billed) unless you turn on Also return UNCHANGED listings.

Why don't I see any REAPPEARED or EXPIRED listings?

EXPIRED rows, and the underlying "this listing is gone" state, are only produced after a run that reaches the natural end of results for every search in the call, with Also return EXPIRED listings on and no Resume id set. A capped run, a time-limited run, or one using Resume, leaves the previous state exactly as it was rather than guessing a listing is gone. REAPPEARED can only ever happen for a listing a prior run already marked gone this way, so a search that has never yet completed a full scan with that option on will never show either changeType.

Does Resume work if I run the exact same search again?

Yes. Paste the previous run or dataset id into Resume from run/dataset ID and this run still walks every result page from the start of the search, but skips any listing id already collected there, so pagination continues normally and you are not billed twice for the same listing.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push a summary of each listing into Notion, Linear or Airtable.

Ready to collect with Gumtree.com Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.