# Classified Ads Scraper for Gumtree UK - Listings & Seller Leads (`scrapesage/gumtree-scraper`) Actor

Scrape Gumtree UK (gumtree.com) classified ads: price, exact posting time, location, photos and every attribute for cars, vans, property, jobs and pets. Full listing pages, trade-seller leads and monitor mode for new listings. No login. Independent tool, not affiliated with Gumtree.

- **URL**: https://apify.com/scrapesage/gumtree-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** E-commerce, Lead generation, Agents
- **Features:** Limited permissions
- **Stats:** 5 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Classified Ads Scraper for Gumtree UK - Listings, Prices, Vehicle & Property Data, Trade-Seller Leads

> **Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Gumtree or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "Gumtree" is referenced only to describe the publicly available website this Actor collects data from.

Scrape **gumtree.com (United Kingdom)** classified ads with every detail Gumtree itself shows: the price, the **exact posting time**, town and **postcode district**, every photo, the promotion flags, and the category's own attributes as clean fields - **make, model, year, mileage, fuel and gearbox** for cars, **bedrooms, rent per month and availability** for property, **salary, employer and contract** for jobs, **breed, age, vaccinations and microchip** for pets.

Switch on listing pages for the **full description, all photos, the complete spec sheet, the seller's rating, reviews and years on Gumtree, and the vehicle history check** (write-off category, imported, original plate and colour). Turn **trade sellers** - car dealers, letting agents, shops, recruiters, service businesses - into scored **leads**. Put it on a schedule in **monitor mode** and get only the listings posted since the last run, plus price drops.

Every Gumtree UK category works: cars, vans and motorbikes, property to rent and for sale, jobs, pets, services and the whole for-sale marketplace. No login, no cookies, no browser.

### Why this Gumtree scraper?

|  | This actor |
| --- | --- |
| Title, price, location, photo | ✅ |
| Exact posting time + "posted 4 days ago" text | ✅ |
| Postcode district, map position (where the seller shows it) | ✅ |
| Category attributes as clean fields (make, model, year, mileage, bedrooms, salary, breed...) | ✅ |
| Every attribute Gumtree shows, as one object | ✅ |
| Rent per month for every rental (weekly rents converted) | ✅ |
| Price and seller-type filters applied exactly to every row | ✅ |
| Featured, urgent, bumped flags and "saved by" count | ✅ |
| Each listing delivered once (featured ads repeat on every Gumtree page) | ✅ |
| Full listing page: description, all photos, full spec, seller rating & history | ✅ opt-in |
| Vehicle history check (write-off category, imported, original plate/colour) | ✅ opt-in |
| Trade-seller leads with a lead score | ✅ opt-in |
| Monitor mode: only new listings, plus price drops | ✅ |
| A location Gumtree does not recognise is named, never silently widened to the whole UK | ✅ |

### What you get

Every listing row (`type: "listing"`):

| Field | What it is |
|---|---|
| `listingId`, `url`, `title` | Gumtree ad ID, link and title |
| `price`, `priceText`, `priceType`, `currency` | Price as a number (GBP), exactly as shown, and its type: `fixed`, `free`, `contact` or `rental` |
| `priceFrequency`, `pricePerMonth` | Property only: `pm` / `pw` and the monthly rent (weekly x 52 / 12) |
| `category`, `categoryId`, `vertical` | Gumtree category and the vertical (`motors`, `property`, `jobs`, `pets`, `services`, `for-sale`) |
| `location`, `town`, `area`, `postcodeDistrict` | Where the item is, down to the postcode district (e.g. `M12`) |
| `postcode`, `latitude`, `longitude` | Full postcode for trade sellers; map position where the seller chose to show the map |
| `postedAt`, `postedAgo` | Exact posting time (ISO 8601) and Gumtree's "4 hours ago" text |
| `description` | Gumtree's preview text (search) or the full description (listing pages on) |
| `image`, `images`, `imageCount`, `hasVideo` | Every photo URL of the ad |
| `sellerType`, `sellerTypeLabel`, `sellerId`, `isProAccount` | Trade or private, Gumtree's own label (Trade, Business, Agency, Private) |
| `isFeatured`, `isUrgent`, `isBumpedUp`, `isStandout`, `isPromoted` | Paid promotion flags |
| `favouriteCount` | How many people saved the ad |
| `deliveryAvailable`, `deliveryOption`, `isIdVerified`, `isVerifiedBusiness` | Delivery and verification flags |
| `attributes` | Every attribute Gumtree shows for the ad, e.g. `{ "Mileage": "36000 miles", "Fuel type": "Diesel" }` |
| `condition` | Item condition where the category has one |
| **Cars, vans, motorbikes** | `make`, `model`, `year`, `mileage`, `fuelType`, `transmission`, `bodyType`, `engineSizeCc`, `colour`, `doors`, `seats`, `previousOwners` |
| **Property** | `propertyType`, `bedrooms` (studio = 0), `availableDate` |
| **Jobs** | `salary`, `salaryPeriod`, `recruiter`, `recruiterType`, `contractType`, `jobHours`, `closingDate`, `workingFromHome`, `immediateStart` |
| **Pets** | `breed`, `petSex`, `petAge`, `petBirthDate`, `readyToLeave`, `readyToLeaveDate`, `vaccinated`, `microchipped`, `neutered`, `kcRegistered`, `healthChecked` |
| `searchQuery`, `searchUrl`, `searchPage`, `searchPosition`, `scrapedAt` | Where the row came from |

With **listing pages on** (`includeListingDetails`), each row also gets: the full `description`, all `images`, the complete `attributes` list (running costs, performance, dimensions...), `categoryPath`, `createdAt`, `updatedAt`, `videoUrls`, `sellerName`, `sellerRating`, `sellerReviewCount`, `sellerMemberSince` (e.g. "17+ years"), `sellerLastActive`, `sellerTotalAds`, `sellerFeedback`, `sellerLogo`, `sellerProfileUrl`, `sellerPhoneMasked` (trade sellers) and, for vehicles, `vat` and `vehicleHistory`.

Every **trade-seller lead** (`type: "seller"`, with `includeSellerLeads`): `businessName`, `businessType`, `leadScore` (0-100), `rating`, `reviewCount`, `ratingBreakdown`, `feedback`, `memberSince`, `lastActive`, `totalAds`, `listingsInRun`, `categories`, `logo`, `maskedPhone`, `profileUrl`, `businessLocation`, `businessTown`, `businessPostcodeDistrict`, `businessPostcode`, map position, and a sample listing.

### Use cases

- **Car dealer and trade lead generation** - find the dealers, letting agents, shops and recruiters active in any category and town, ranked by a lead score, with their Gumtree profile, rating and years on the platform.
- **Used-car and van market intelligence** - asking prices by make, model, year and mileage; how long ads stay up; which dealers stock what; write-off and import flags from the history check.
- **Rental and property research** - rents per month by area and bedroom count, availability dates, landlord vs agency share.
- **Reselling and sourcing** - catch new, well-priced phones, furniture or tools the moment they are posted, and price drops on ads you are watching.
- **Recruitment and labour-market data** - pay, contract types, remote and immediate-start jobs by city, and the employers hiring.
- **Pet market data** - breeds, prices, KC registration and health-check rates by region.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) - the free plan is enough to try this actor.
2. Open this actor, type keywords (and optionally a category, a town or postcode district, a price range), or paste Gumtree URLs, then click **Start**.
3. Watch rows arrive in the **Overview** tab, or switch to the Listings, Cars/vans/campervans, Motorbikes, Property for sale, Property to rent, Jobs, Pets, Full listing details or Trade-seller leads views.
4. **Export** to JSON, CSV, Excel, XML or RSS, or read the results through the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "searchQueries": ["ford transit"],
    "categories": ["vans"],
    "locations": ["manchester"],
    "sort": "date",
    "maxPrice": 9000,
    "sellerType": "trade",
    "maxItems": 100,
    "includeListingDetails": true,
    "includeSellerLeads": true
}
```

- **searchQueries** - keywords; each is combined with every category and location.
- **categories** - a Gumtree category slug or name: `cars`, `vans`, `motorbikes-scooters`, `campervans-motorhomes`, `for-sale`, `property-to-rent`, `property-for-sale`, `jobs`, `pets`, `dogs`, `business-services`, or a deeper slug such as `iphone`.
- **locations** - a town, city or postcode district: `london`, `leeds`, `LS1`. A full postcode is searched as its district.
- **startUrls** / **urlsFromFile** - Gumtree search pages (with filters already applied in your browser), single listing pages, or a seller's page of ads; one at a time, pasted as a list, or from a linked .txt/.csv/Google Sheet.
- **sort** - most relevant, newest first, price low to high, price high to low, nearest first.
- **minPrice / maxPrice / sellerType / distance** - filters; price and seller type are re-checked on every row.
- **includeListingDetails** - open each listing page for the full data (one extra page per listing).
- **includeSellerLeads** - add one lead per unique trade seller found.
- **monitorMode / monitorKey** - deliver only listings posted since the last run (plus price drops).
- **maxItems** - the listing cap across all searches; each search gets a fair share.

An empty input runs a small sample search so you can see the output.

### Output

A listing row with listing pages on (shortened):

```json
{
    "type": "listing",
    "listingId": "1803419039",
    "url": "https://www.gumtree.com/p/renault/2015-renault-captur-1.5-dci-90-dynamique-medianav-energy-5dr-hatchback-diesel-manual/1803419039",
    "title": "2015 Renault Captur 1.5 dCi 90 Dynamique MediaNav Energy 5dr HATCHBACK Diesel Manual",
    "price": 4000,
    "priceText": "£4,000.00",
    "currency": "GBP",
    "category": "Renault",
    "vertical": "motors",
    "location": "Hyde, Manchester",
    "town": "Hyde",
    "postcodeDistrict": "SK14",
    "postedAt": "2026-10-08T16:40:15.919Z",
    "postedAgo": "9 hours ago",
    "imageCount": 17,
    "sellerType": "trade",
    "isStandout": true,
    "favouriteCount": 3,
    "attributes": { "Mileage": "36000 miles", "Fuel type": "Diesel", "Engine Power": "88.5 bhp", "Insurance Group": "12E", "CO2 emissions": "95 g/km", "Previous Keepers": "3" },
    "make": "Renault",
    "model": "CAPTUR",
    "year": 2015,
    "mileage": 36000,
    "fuelType": "Diesel",
    "transmission": "Manual",
    "bodyType": "Hatchback",
    "engineSizeCc": 1461,
    "previousOwners": 3,
    "detailScraped": true,
    "categoryPath": ["Motors", "Cars", "Renault", "Renault CAPTUR"],
    "createdAt": "2026-10-02T16:19:08.797Z",
    "sellerName": "Sour Motors",
    "sellerRating": 3.67,
    "sellerReviewCount": 6,
    "sellerMemberSince": "17+ years",
    "sellerPhoneMasked": "0750847XXXX",
    "sellerProfileUrl": "https://www.gumtree.com/sellerads/1803419039?userId=53458489&publicUserId=282897ff11e1dd4dcaf7f10fa00044fd",
    "vehicleHistory": { "checked": true, "notCatAorB": true, "notCatCorD": true, "notCatSorN": false, "notImported": false, "originalNumberPlate": true, "originalColour": true }
}
```

A trade-seller lead:

```json
{
    "type": "seller",
    "businessName": "Sour Motors",
    "businessType": "Trade",
    "leadScore": 70,
    "rating": 3.67,
    "reviewCount": 6,
    "ratingBreakdown": { "1": 1, "2": 0, "3": 1, "4": 2, "5": 2 },
    "memberSince": "17+ years",
    "listingsInRun": 4,
    "maskedPhone": "0750847XXXX",
    "profileUrl": "https://www.gumtree.com/sellerads/1803419039?userId=53458489&publicUserId=282897ff11e1dd4dcaf7f10fa00044fd",
    "businessLocation": "Hyde, Manchester",
    "businessPostcodeDistrict": "SK14",
    "sampleListingUrl": "https://www.gumtree.com/p/renault/2015-renault-captur-1.5-dci-90-dynamique-medianav-energy-5dr-hatchback-diesel-manual/1803419039"
}
```

The **lead score** adds up: trade seller (base), paid Gumtree account, rating of 4+ from 3+ reviews, years on Gumtree, several listings in this run, active in the last 30 days, a logo, and a verified business badge.

### Good to know

- **United Kingdom only.** This actor covers gumtree.com. Gumtree Australia and South Africa are separate websites; their URLs are skipped and named on the run card, at no cost.
- **Phone numbers.** Gumtree shows a seller's full number only to logged-in users, and this actor never logs in. Trade listings carry the masked number Gumtree displays to everyone (e.g. `0750847XXXX`); private sellers' numbers are never collected.
- **Privacy by design.** Number plates are not collected (Gumtree hides them on the listing page). The map position is included only where the seller chose to show the map, and the full postcode only for trade sellers; everyone else gets the postcode district. Seller leads are only ever trade businesses.
- **Featured ads** sit at the top of every Gumtree results page. Each listing is delivered once per run.
- **Big searches.** Gumtree shows at most 50 result pages per search. For larger requests the actor carries on with the other sort orders and removes duplicates.
- **Exact filters.** Gumtree's own price filter lets some listings outside the range through (rentals especially); the actor re-checks price and seller type on every row and bills nothing it drops. For rentals the monthly rent is compared.
- **Seller type** is not shown in some categories (pets, for example), so a trade or private filter returns nothing there.
- **Locations.** Towns, cities and postcode districts work. Gumtree's search box does not recognise regions such as "Greater Manchester"; such a search is skipped and named on the run card instead of silently returning the whole UK.
- **Seller history fields** (last active, total ads) appear only when Gumtree shows them for that seller.
- **Trade-seller leads come after the listings in the dataset.** With 50 or more listing rows, the Console's Trade-seller leads view therefore opens on empty pages; the run's final message names the page where the leads start. The Export button with the Trade-seller leads view selected downloads only the leads. Through the API, request the `sellers` view with `clean=true` (or keep every row and filter on `type: "seller"`) to get only the leads.

### How much does it cost to scrape Gumtree?

This Actor uses Apify's **pay-per-event** pricing: you are charged for the results it delivers, with no monthly rental. The events it can charge are:

- **Listing** - one listing row from a search, with all the fields above.
- **Detailed listing** - one listing row enriched from its listing page (full description, all photos, the complete spec sheet, seller rating and history, the vehicle history check for cars).
- **Trade-seller lead** - one lead per unique trade seller found.
- **Actor start** - from 23 October 2026, Apify's standard run-start event: charged once when a run starts, per GB of run memory (once for the default 1 GB run). It covers each run's fixed cost, so the per-listing prices can stay low.

The current price of each event is shown on the **Pricing** tab of this page. Set a maximum total charge on the run if you want a hard cap on spend: the actor stops cleanly at the cap and never bills a row it did not deliver. Rows left out by your filters are never billed.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** - start runs, fetch datasets and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** - official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** - run it hourly or daily on a category, town or saved search; pair it with `monitorMode` for only-new output.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** - trigger a CRM import, a Slack alert or a price-drop email the moment a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/gumtree-scraper').call({
    searchQueries: ['ford transit'],
    categories: ['vans'],
    locations: ['manchester'],
    sellerType: 'trade',
    includeSellerLeads: true,
    maxItems: 200,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} listings and trade-seller leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps, no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** - multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** - push new trade-seller leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** - get notified when a monitored search finds new ads.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** - auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** - pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** - trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** - ask your assistant to "find used vans under £9,000 from trade sellers in Manchester and rank the dealers" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready**: AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)**: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp), with no account and no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)**: agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **marketplace, classifieds & lead-gen stack**:

- **[Craigslist Scraper](https://apify.com/scrapesage/craigslist-scraper)** - US classifieds: housing, for-sale, services, gigs & jobs.
- **[eBay Scraper](https://apify.com/scrapesage/ebay-scraper)** - active listings on 10 eBay marketplaces, prices, item details and seller leads.
- **[Poshmark Scraper](https://apify.com/scrapesage/poshmark-scraper)** - fashion resale listings, sold comps & seller leads.
- **[Reverb Scraper](https://apify.com/scrapesage/reverb-scraper)** - musical-instrument marketplace & seller leads.
- **[Rightmove Scraper](https://apify.com/scrapesage/rightmove-scraper)** - UK property for sale & to rent, plus agent leads.
- **[Rent.com Scraper](https://apify.com/scrapesage/rent-com-scraper)** - US rentals & property-manager leads.
- **[Redfin Scraper](https://apify.com/scrapesage/redfin-scraper)** - US real-estate listings & estimates.
- **[FastExpert Scraper](https://apify.com/scrapesage/fastexpert-agent-scraper)** - real-estate agent leads with contact details.

### Tips

- **Dealer call lists:** set `categories: ["cars"]`, a town, `sellerType: "trade"` and `includeSellerLeads: true`, then export the Trade-seller leads view as CSV or Excel (Export button) and sort it by lead score.
- **Exact searches:** apply every filter you want on gumtree.com in your browser, then paste the resulting URL into `startUrls`; the actor follows Gumtree's own pagination.
- **Only new ads:** combine a [Schedule](https://docs.apify.com/platform/schedules) with `monitorMode` and a separate `monitorKey` for each saved search.
- **Cost control:** leave `includeListingDetails` off for fast search-only runs; the search rows already carry the price, posting time, location, photos and attributes.

### FAQ

**How do I scrape a specific Gumtree category or town?** Put the category in `categories` (e.g. `cars`, `property-to-rent`) and the town or postcode district in `locations` (e.g. `bristol`, `BS1`), or paste a Gumtree search URL into `startUrls`.

**Does it need a Gumtree account or API key?** No. It reads the same public search and listing pages any visitor sees.

**Can I get sellers' phone numbers?** Only the masked number Gumtree shows publicly for trade sellers (e.g. `0750847XXXX`). Full numbers need a Gumtree login, and this actor never logs in.

**Does it cover Gumtree Australia or South Africa?** No - this actor covers gumtree.com (UK) only.

**Can I export to Google Sheets, CSV or Excel?** Yes - one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I monitor new listings automatically?** Turn on `monitorMode`, create a [Schedule](https://docs.apify.com/platform/schedules), and add a [webhook](https://docs.apify.com/platform/integrations/webhooks) or [Zapier zap](https://docs.apify.com/platform/integrations/zapier) to push new ads into your tools. The first run delivers the newest listings and sets the starting point; later runs deliver only listings posted since, plus price drops.

### Data & lawful use

This Actor reads public listings and the seller information shown on them. Sellers on Gumtree include private individuals, so seller first names and locations are personal data. If you are in the EU or UK you are the data controller for what you do with them: have a lawful basis, use the data for market research, price monitoring or lawful sourcing, honour deletion requests, and do not send private sellers unsolicited marketing. Seller leads are produced for trade sellers only.

Under [Apify's Standard Actor Contract](https://docs.apify.com/legal/standard-actor-contract), which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.

### Disclaimer

**This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Gumtree or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.**

"Gumtree" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official Gumtree product, is not authorised or certified by Gumtree, and does not distribute Gumtree software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome - this actor is actively maintained.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords to search on Gumtree UK, e.g. <code>iphone</code>, <code>sofa</code>, <code>ford transit</code>. Each keyword is combined with every category and location below. Leave empty to browse a whole category or location.

## `categories` (type: `array`):

Optional Gumtree category, as the slug from a Gumtree URL (<code>search_category=</code>) or its name. Main ones: <code>cars</code>, <code>vans</code>, <code>motorbikes-scooters</code>, <code>campervans-motorhomes</code>, <code>for-sale</code>, <code>property-to-rent</code>, <code>property-for-sale</code>, <code>jobs</code>, <code>pets</code>, <code>dogs</code>, <code>business-services</code>. Deeper slugs such as <code>iphone</code> or <code>sofas</code> work too. Combined with every keyword and location.

## `locations` (type: `array`):

Optional town, city or postcode district, e.g. <code>london</code>, <code>manchester</code>, <code>leeds</code>, <code>LS1</code>. A full postcode is searched as its district (<code>M1 1AA</code> becomes <code>M1</code>). A location Gumtree does not recognise is skipped and named on the run card instead of silently searching the whole UK. Combined with every keyword and category.

## `startUrls` (type: `array`):

Paste gumtree.com URLs: a search results page with your filters already applied (e.g. <code>https://www.gumtree.com/search?search_category=cars\&search_location=london\&max_price=8000</code>), single listing pages (<code>/p/...</code>), or a seller's page of ads (<code>/sellerads/...</code>). Listing URLs always return the full listing page.

## `urlsFromFile` (type: `string`):

Many URLs at once: paste them one per line, or give one link to a .txt/.csv file, a Google Sheet or a Google Drive file that lists them.

## `maxItems` (type: `integer`):

Maximum number of listings to return across all searches and URLs (seller leads are extra). Each search gets a fair share. Gumtree shows up to 50 result pages per search; past that the actor continues with other sort orders.

## `sort` (type: `string`):

Result order for keyword searches. Featured (paid) ads always appear first on Gumtree.

## `minPrice` (type: `integer`):

Only return listings at or above this price. Applied exactly to every row; for rentals the monthly rent is compared (weekly rents are converted).

## `maxPrice` (type: `integer`):

Only return listings at or below this price. Applied exactly to every row (Gumtree's own price filter lets some higher prices through); for rentals the monthly rent is compared.

## `distance` (type: `integer`):

Widen the search around the location by this many miles. Gumtree offers 1, 3, 5, 10, 15, 30, 50, 75, 100 and 1000; other values are rounded up to the next one.

## `sellerType` (type: `string`):

Only trade sellers (dealers, shops, agencies, recruiters) or only private sellers. Applied exactly to every row; categories that do not show a seller type (e.g. pets) return nothing for a trade/private filter.

## `includeListingDetails` (type: `boolean`):

Adds the full description, every photo, the complete attribute list (vehicle specs, running costs, property details, job terms...), created/updated dates, the seller's name, rating, reviews, years on Gumtree and profile link, and the vehicle history check for cars. One extra page per listing.

## `includeSellerLeads` (type: `boolean`):

Also output one lead record per unique TRADE seller found (dealers, shops, letting agents, recruiters, service businesses): business name, rating and review breakdown, years on Gumtree, last active, profile link, logo, location, how many of their listings this run found, and a lead score. Private sellers are never output as leads.

## `monitorMode` (type: `boolean`):

Remember what earlier runs delivered and output only listings posted since (plus any whose price dropped). The first run delivers the newest listings and sets the starting point. Ideal on an Apify Schedule.

## `monitorKey` (type: `string`):

Name for this monitor's memory. Use a different key for each saved search you schedule.

## `proxyConfiguration` (type: `object`):

The default Apify proxy works for Gumtree. The actor starts on datacenter addresses and moves to UK residential addresses by itself if Gumtree refuses them.

## Actor input object example

```json
{
  "searchQueries": [
    "iphone"
  ],
  "maxItems": 60,
  "sort": "relevance",
  "sellerType": "any",
  "includeListingDetails": false,
  "includeSellerLeads": false,
  "monitorMode": false,
  "monitorKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped records in the default dataset. Each row is tagged with a `type` (listing or seller).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "iphone"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/gumtree-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searchQueries": ["iphone"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/gumtree-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "iphone"
  ]
}' |
apify call scrapesage/gumtree-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapesage/gumtree-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/QrhfLejTSfanYLMjt/builds/b4CixFNgqV3vEXNVk/openapi.json
