# Gumtree Scraper - Listings, Prices & Seller Leads (`scrapesage/gumtree-scraper`) Actor

Scrape Gumtree classified ads: titles, prices, locations, full descriptions, photos, vehicle/property attributes, condition and seller details. Filter by category, location, price and seller type, enrich with seller leads, and use monitor mode to capture only new listings. No login or API key.

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

## Pricing

from $5.00 / 1,000 listing scrapeds

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Gumtree Scraper — Classified Listings, Prices, Attributes & Seller Leads

Extract **complete Gumtree classified-ad data** — titles, **real prices**, locations, full descriptions, every photo, and the category-specific attributes other scrapers drop: **vehicle specs (year, mileage, fuel, engine, transmission, colour), property details, condition, seller type and posted date**. Turn every seller into a **lead** (name, trade/private, profile, phone when available, lead score), and use **monitor mode** to capture only *new* listings on a schedule.

Works across cars, vans & motorbikes, property to rent/buy, jobs, electronics, home & garden, pets, services and the rest of the **for-sale** marketplace. No login, no cookies, no browser — fast, reliable extraction.

### Why this Gumtree scraper?

Most Gumtree scrapers grab a title and a price and stop there — and several of the popular ones sit well below 90% reliability. This actor reads Gumtree's own search and ad (VIP) pages directly and ships the **richest, most reliable dataset in the category**.

| Data | Typical scrapers | This actor |
|---|---|---|
| Title, price, currency, location | ✅ | ✅ |
| Price type (fixed / free / contact / rental p/m) | ❌ | ✅ |
| Full description (not just the teaser) | partial | ✅ opt-in |
| Every photo + photo count | ❌ | ✅ |
| Vehicle specs: year, mileage, fuel, engine, transmission, body, colour, doors | ❌ | ✅ |
| Property / item attributes (key–value) | ❌ | ✅ opt-in |
| Item condition + availability | ❌ | ✅ opt-in |
| Seller type (trade / private) | ❌ | ✅ |
| Seller name, profile & **phone** (when published) | ❌ | ✅ opt-in |
| Exact geo (lat/lng) + posted date | ❌ | ✅ opt-in |
| **Seller lead records** with lead score | ❌ | ✅ opt-in |
| **Monitor mode** — only new listings | ❌ | ✅ |
| Promoted / urgent / featured flags | ❌ | ✅ |

### Use cases

- **Lead generation** — find **trade sellers and dealers** in any category and city, then reach them with name, profile and phone (`includeSellerLeads`, `revealPhone`). Car dealers, traders, landlords and service providers all advertise on Gumtree.
- **Price & market intelligence** — track asking prices, price drops and supply for cars, phones, furniture or rentals by category and location; spot under-priced deals and arbitrage.
- **Reselling & flipping** — monitor `for-sale` categories for new, well-priced items the moment they're posted (`monitorMode`).
- **Property research** — pull rentals and for-sale listings with attributes, location and agent/landlord contacts.
- **Competitor & inventory monitoring** — watch a dealer, a category or a saved search for new ads on a schedule.

### 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 the **Gumtree Scraper**, enter search keywords (and optionally categories, locations, a price range), or paste Gumtree URLs — then click **Start**.
3. Watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "searchQueries": ["bmw 3 series"],
    "categories": ["cars"],
    "locations": ["london"],
    "sort": "date",
    "maxPrice": 8000,
    "sellerType": "trade",
    "maxItems": 100,
    "includeListingDetails": true,
    "includeSellerLeads": true,
    "revealPhone": true
}
```

- **searchQueries** — keywords, each combined with every category and location.
- **categories** — Gumtree category slugs from the URL (`cars`, `vans`, `motorbikes`, `property-to-rent`, `property-for-sale`, `jobs`, `for-sale`, `pets`, `services`, …).
- **locations** — location slugs/names (`london`, `manchester`, `birmingham`, …).
- **startUrls** — paste full Gumtree **search** pages (with any filters already applied) or individual **ad** pages. Works for gumtree.com (UK), gumtree.com.au and gumtree.co.za.
- **region** — `uk` (default, gumtree.com), `au`, or `za`. For AU/ZA, pasting `startUrls` is recommended.
- **sort / minPrice / maxPrice / distance / sellerType** — filters.
- **includeListingDetails** *(default false)* — open each ad for the full description, all photos, every attribute, condition, geo, seller name and posted date.
- **includeSellerLeads** *(default false)* — also output one de-duplicated `seller` lead record per unique seller (with lead score).
- **revealPhone** *(default false)* — best-effort phone extraction from the ad page.
- **monitorMode / monitorKey** — output only listings not seen on previous runs.
- **maxItems** — cap across all searches.

### Output

One record per listing (`type: "listing"`), plus optional seller leads (`type: "seller"`):

```json
{
    "type": "listing",
    "region": "uk",
    "listingId": "1514405151",
    "url": "https://www.gumtree.com/p/vauxhall/vauxhall-astra-cdti-sri.../1514405151",
    "title": "Vauxhall, ASTRA, CDTI SRI ECO GLEX Hatchback, 2016 Manual, 1598 (cc), 5 doors",
    "price": 3000,
    "priceText": "£3,000",
    "priceType": "fixed",
    "currency": "GBP",
    "location": "Croydon, London",
    "description": "Vauxhall Astra, grey, very clean, full history, 2 keys, MOT…",
    "category": "Cars",
    "categoryPath": ["Cars, Vans & Motorbikes", "Cars", "Vauxhall"],
    "vehicle": { "year": "2017", "mileage": "113,000 miles", "fuelType": "Diesel", "engineSize": "1,598 cc" },
    "attributes": { "Body Type": "Hatchback", "Transmission": "Manual", "Colour": "Grey", "Doors": "5" },
    "mileage": 113000,
    "condition": "UsedCondition",
    "sellerType": "trade",
    "sellerName": "J Motors",
    "phone": "07xxx xxxxxx",
    "image": "https://img.gumtree.com/...jpg",
    "imageCount": 29,
    "latitude": 51.38,
    "longitude": -0.09,
    "postedDate": "2 days ago",
    "isPromoted": false,
    "searchQuery": "bmw 3 series",
    "scrapedAt": "2026-06-17T16:45:00.000Z"
}
```

A seller lead (`type: "seller"`) carries `sellerName`, `sellerType`, `phone`, `location`, `sellerUrl`, `sampleListingUrl` and a 0–100 `leadScore`.

#### What to expect (field coverage)

Gumtree is seller-entered data, so some fields exist only when the seller filled them in. Title, price, location, URL and image are present on virtually every ad. Full descriptions, attributes, condition, geo and posted date come from the ad page (`includeListingDetails`). Phone numbers are published by some sellers and hidden by others — `revealPhone` captures the ones that are public. A blank field means the seller didn't publish it, never that scraping failed.

### 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/daily to watch a category, city or saved search for new ads; pair with `monitorMode` for clean only-new output.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, 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,
    revealPhone: true,
    maxItems: 200,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} listings & 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 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 trade car dealers in Leeds under £5,000 and list their phone numbers" 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) — no account, 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)** — listings, sold prices (comps) & 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

- **Trade leads**: set `sellerType: "trade"` on vehicle categories and turn on `includeSellerLeads` + `revealPhone` to build a dealer call list.
- **Exact filters**: apply every filter you want in your browser on gumtree.com, then paste the resulting search URL into `startUrls` — the actor reproduces it exactly and paginates.
- **Only new ads**: combine [Schedules](https://docs.apify.com/platform/schedules) with `monitorMode` (and a unique `monitorKey` per saved search) for clean new-listing alerts.
- **Cost control**: leave `includeListingDetails` off for fast, cheap search-card runs; turn it on only when you need full descriptions, attributes and contacts.

### FAQ

**How do I scrape a specific Gumtree category or city?** Put the category slug in `categories` (e.g. `cars`, `for-sale`) and the place in `locations` (e.g. `london`), or just paste a Gumtree search URL into `startUrls`.

**Does it need the Gumtree API or a login?** No. There is no public Gumtree API — this actor reads the same public search and ad pages a visitor sees, no key or login required.

**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 optionally add a [webhook](https://docs.apify.com/platform/integrations/webhooks) or [Zapier zap](https://docs.apify.com/platform/integrations/zapier) to push new ads/leads into your tools as they appear.

**Where do phone numbers come from?** Only from the public ad page, when the seller chose to publish a number. Many ads keep the phone behind Gumtree's reveal button, so `revealPhone` is best-effort — it returns the ones that are publicly visible.

**Is scraping Gumtree legal?** This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (e.g. GDPR/UK GDPR for personal data) and Gumtree's terms.

### 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, each combined with every category and location below. Leave empty to browse a whole category/location.

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

Optional Gumtree category slugs (from the URL `search_category=`), e.g. `cars`, `vans`, `motorbikes`, `property-to-rent`, `property-for-sale`, `flats-and-houses-for-rent`, `jobs`, `for-sale`, `pets`, `business-services`, `services`. Combined with every keyword and location.

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

Optional location slugs/names (from the URL `search_location=`), e.g. `london`, `manchester`, `birmingham`, `bristol`. Combined with every keyword and category.

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

Paste full Gumtree URLs — search/results pages (with any filters already applied) or individual ad (listing) pages. Works for gumtree.com (UK), gumtree.com.au and gumtree.co.za. Use this to reproduce an exact filtered search from your browser.

## `region` (type: `string`):

Gumtree site to search when using keywords/categories/locations. `UK` = gumtree.com (fully supported). For Australia/South Africa, pasting `startUrls` is recommended.

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

Result ordering.

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

Only return ads at or above this price.

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

Only return ads at or below this price.

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

Search radius around the location, in miles.

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

Filter by seller type (most reliable for vehicle categories). `Any` returns both.

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

Maximum number of listings to return across all searches. Pagination stops once this is reached.

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

Open each ad's page for the full description, all photos, every attribute (vehicle specs, property details…), condition, exact location/geo, seller name and posted date. Adds one fast request per listing.

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

Also emit one de-duplicated `seller` lead record per unique seller found (name, trade/private, profile, phone when available, lead score). Implies opening listing pages.

## `revealPhone` (type: `boolean`):

Attempt to extract a contact phone number from each listing page. Private sellers often include one; many ads keep it hidden behind Gumtree's reveal button, so this is best-effort. Implies opening listing pages.

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

Remember listings seen on previous runs and output only NEW ones each run. Ideal on a Schedule for new-listing alerts and lead pipelines. Uses a named key-value store so it works alongside Apify Schedules.

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

Name for this monitor's memory. Use a distinct key per saved search so their 'seen' lists don't mix.

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

Proxy settings. Apify datacenter proxy works well for Gumtree; switch to residential if you hit blocks on large runs.

## Actor input object example

```json
{
  "searchQueries": [
    "iphone"
  ],
  "region": "uk",
  "sort": "relevance",
  "sellerType": "any",
  "maxItems": 60,
  "includeListingDetails": false,
  "includeSellerLeads": false,
  "revealPhone": 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/xnsdYXumqdDL71xNm/openapi.json
