# Gumtree Scraper (`scraptivo/gumtree-scraper`) Actor

Extracts Gumtree UK listings with prices, locations, descriptions, images, seller info, and optional phone numbers from search, category, or direct listing URLs.

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

## Pricing

from $0.97 / 1,000 product scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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** collects classified listings from [Gumtree UK](https://www.gumtree.com) and turns them into structured data for lead generation, market research, and deal monitoring. Provide a search URL, category, or keyword, run the Actor, and export title, price, location, description, images, seller info, and more to JSON, CSV, Excel, or your preferred integration. Optionally enrich each listing with full details and seller phone numbers. From just **$1 per 1,000 listings** ($1.50 per 1,000 detail pages).

### What can you automate with Gumtree Scraper?

- **Build classified lead lists** — export listings with title, price, and location at scale.
- **Monitor market prices** — track asking prices for cars, goods, and property over time.
- **Discover private sellers** — filter by private or business/trade sellers.
- **Collect contact data** — optionally reveal seller phone numbers.
- **Schedule recurring collection** — refresh a category or keyword daily.

### Who is this scraper for?

| Team | Workflow |
|---|---|
| Marketplaces and dealers | Track competitor listings and pricing. |
| Lead-generation teams | Collect seller info and contact details. |
| Market researchers | Analyze supply and price trends by category. |
| Bargain hunters | Monitor new listings matching saved searches. |

### What data can you collect from Gumtree?

| Data group | Example fields | How it helps |
|---|---|---|
| Listing identity | `listingId`, `title`, `url`, `sourcePageUrl` | Identify and link each listing. |
| Pricing | `price`, `priceCurrency` | Track asking prices. |
| Location & area | `location`, `area`, `breadcrumbs` | Segment by region. |
| Media & description | `primaryImageUrl`, `imageUrls`, `description` | Enrich records with visuals and text. |
| Seller info | `contactName`, `sellerName`, `sellerType`, `sellerRatingCount` | Filter and contact sellers. |
| Freshness | `postedAt`, `updatedAt`, `featured`, `urgent` | Spot new and promoted listings. |

### How to use Gumtree Scraper

1. Open the Actor and go to the **Input** tab.
2. Paste a **Start URL** or enter a **Search Query** and category filters.
3. Set **Location**, **Seller Type**, and any condition filters.
4. Choose a **Max Items** limit and toggle **Extract Listing Details** if needed.
5. Run the Actor, then export the dataset as JSON, CSV, or Excel.

```json
{
  "searchQueries": ["laptop"],
  "category": "for-sale",
  "subcategory": "computers-software",
  "location": "uk",
  "sellerType": "private",
  "extractListingDetails": true,
  "maxItems": 50
}
```

### Example workflow

#### Daily watch of private car listings

1. Run a "used cars" search for your region every day.
2. Keep only listings under your target `price` with your required `condition`.
3. Send new records to a spreadsheet or CRM.
4. Deduplicate using the stable `listingId` or `url`.

### Automate and integrate your results

Schedule the Actor from the Apify Console or via API to run daily or weekly. After a successful run, trigger a webhook to push results to Google Sheets, Make, Zapier, Slack, or a database. Use the stable `listingId` or `url` as your deduplication key.

### Input reference

| Field | Type | Required | Default | What it controls |
|---|---:|---|---|---|
| `startUrls` | array | No | `[{"url": "https://www.gumtree.com/search?..."}]` | Search, category, or listing URLs. |
| `searchQueries` | array | No | `["laptop"]` | Free-text keywords. |
| `category` | string | No | — | Top-level vertical (`cars-and-vehicles`, `for-sale`, `property`, …). |
| `subcategory` | string | No | `computers-software` | Category slug from Gumtree URLs. |
| `location` | string | No | `uk` | Location slug for search results. |
| `sellerType` | string | No | — | `private` or `business`. |
| `condition` | string | No | — | For-sale condition filter (`new`, `good`, …). |
| `extractListingDetails` | boolean | No | `false` | Visit each listing page for full data and contacts. |
| `maxConcurrency` | integer | No | — | Parallel detail-page fetches. |
| `maxItems` | integer | No | — | Max listings to return (0 = unlimited). |

### Output example

```json
{
  "listingId": "1456789012",
  "title": "Dell XPS 13 Laptop - Excellent Condition",
  "price": 450,
  "priceCurrency": "GBP",
  "location": "London",
  "area": "Camden",
  "category": "for-sale",
  "sellerType": "private",
  "postedAt": "2026-08-19",
  "primaryImageUrl": "https://i.ebayimg.com/images/g/example.jpg",
  "description": "Lightly used Dell XPS 13, 16GB RAM, 512GB SSD.",
  "contactName": "Alex",
  "featured": false,
  "urgent": false
}
```

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

Billing is pay-per-event. You are charged **$1 per 1,000 listings** for search-result records (`dataset-item`). Enabling listing details adds **$1.50 per 1,000 detail pages** (`listing-details`). A one-time `Actor Start` fee of $0.00005 applies per run. Apify plan discounts reduce these prices further.

### Reliability and responsible use

Residential proxies are enabled by default and recommended — Gumtree blocks datacenter traffic. Search cards include title, price, location, and images; full `description`, `imageUrls`, and seller contact data are returned only when `extractListingDetails` is enabled. Phone numbers appear only when the seller has published a number. Use the Actor only for lawful purposes and respect Gumtree's terms of service.

### Frequently asked questions

#### Can I scrape specific Gumtree categories?

Yes. Set `category` and `subcategory` (for example `for-sale` with `computers-software`) or paste a category URL directly.

#### Can I schedule Gumtree Scraper to run automatically?

Yes. Use the Apify Scheduler to run daily and catch new listings as soon as they are posted.

#### What counts as one result?

One result is one listing added to the dataset (`dataset-item`). Fully enriched detail pages are a separate `listing-details` event.

#### Why are some fields empty?

Detail-only fields such as `description`, `imageUrls`, and seller contact data appear only when `extractListingDetails` is enabled. Phone numbers appear only when published.

#### How do I avoid duplicate records?

Deduplicate on the stable `listingId` or listing `url`.

#### Do I need a proxy?

Yes — residential proxies are recommended because Gumtree blocks datacenter traffic.

### Related Scraptivo automations

- [Kleinanzeigen Scraper](https://apify.com/scraptivo/kleinanzeigen-scraper) — German classified listings.
- [Autoscout24 Scraper](https://apify.com/scraptivo/autoscout24-scraper) — used-car listings.
- [Apartments Scraper](https://apify.com/scraptivo/apartments-scraper) — rental property listings.

### Support and custom workflows

Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, a sample category or keyword, required fields, and expected volume so we can assess the request.

# Actor input Schema

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

Gumtree search, category, or listing URLs. When provided, other filters are optional.

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

Free-text keywords combined with category/location filters (ignored when startUrls are set).

## `category` (type: `string`):

Top-level Gumtree category used when building search URLs without a start URL.

## `subcategory` (type: `string`):

Category slug from Gumtree URLs, e.g. computers-software, cars, leisure-and-tourism-jobs.

## `location` (type: `string`):

Location slug for search results (default: uk).

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

Filter listings by private or business/trade sellers.

## `condition` (type: `string`):

For-sale condition filter (for-sale category).

## `extractListingDetails` (type: `boolean`):

When enabled, visits each listing page for full data (description, images, seller info, phone). Uses the listing-details charge event. When disabled, only search-result card data is extracted (faster, lower cost).

## `maxConcurrency` (type: `integer`):

Number of listing detail pages fetched in parallel when Extract listing details is enabled. Each request uses a fresh residential proxy session.

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

Maximum number of listings to scrape (0 = unlimited).

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

Apify residential proxy is recommended — Gumtree blocks datacenter traffic.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.gumtree.com/search?search_category=computers-software&search_location=uk&seller_type=private"
    }
  ],
  "searchQueries": [
    "laptop"
  ],
  "category": "for-sale",
  "subcategory": "computers-software",
  "location": "uk",
  "extractListingDetails": false,
  "maxConcurrency": 10,
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Dataset containing scraped Gumtree listings

## `runStats` (type: `string`):

Run statistics including recordsScraped and timestamps

# 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 = {
    "startUrls": [
        {
            "url": "https://www.gumtree.com/search?search_category=computers-software&search_location=uk&seller_type=private"
        }
    ],
    "searchQueries": [
        "laptop"
    ],
    "subcategory": "computers-software",
    "location": "uk",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraptivo/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 = {
    "startUrls": [{ "url": "https://www.gumtree.com/search?search_category=computers-software&search_location=uk&seller_type=private" }],
    "searchQueries": ["laptop"],
    "subcategory": "computers-software",
    "location": "uk",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scraptivo/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 '{
  "startUrls": [
    {
      "url": "https://www.gumtree.com/search?search_category=computers-software&search_location=uk&seller_type=private"
    }
  ],
  "searchQueries": [
    "laptop"
  ],
  "subcategory": "computers-software",
  "location": "uk",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scraptivo/gumtree-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraptivo/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/Hwab4tRVuw4rrmoCx/builds/lQ4mvaYmN2Z9omIUy/openapi.json
