# 🟢 Gumtree Scraper — UK Classifieds Listings (`hipersoft/gumtree-scraper`) Actor

Scrape UK classified ads from Gumtree — cars, property, jobs, pets, for-sale items and more. Search by keyword, category and location, or paste ad URLs, and export one clean row per listing: title, price, location, attributes, image, category, ad ID and URL as JSON, CSV or Excel.

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

## Pricing

from $0.0015 / item scraped

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 — UK Classifieds Listings

Scrape **UK classified ads from Gumtree** into clean, structured **JSON, CSV, Excel or XML**. Search by **keyword, category and location** — or paste specific ad URLs — and the **Gumtree Scraper** returns one tidy row per listing: **title, price, location, attributes, image, category, ad ID and listing URL**. Perfect for market research, price monitoring, comparables, deal-hunting and lead generation across cars, property, jobs, pets and everything Gumtree sells.

Whether you are tracking **used car prices**, watching the **property to rent market**, sourcing **for-sale bargains**, or building a dataset of **local classified ads**, this actor turns Gumtree search pages into a ready-to-use spreadsheet in minutes.

### What does the Gumtree Scraper do?

This actor turns Gumtree search results into a structured dataset. Give it one or more **search keywords**, choose a **category** (or search all categories), optionally set a **location**, and it walks every page of results and collects each ad with clean fields. Because different categories show different details (a car lists year, mileage, fuel and engine size; a flat lists bedrooms and price; a phone lists model and condition), the actor captures those extra details in a flexible `attributes` field so it works across **every Gumtree category** without configuration.

Need the full ad? Turn on **Fetch full ad details** (or paste **Ad URLs** directly) and the scraper opens each ad's own page to collect the **full description, complete image gallery, detailed attributes and posted date**.

### What data can you get?

**Per ad (from search results):**

| Field | Description |
| --- | --- |
| `adId` | Gumtree ad reference number. |
| `title` | Ad title. |
| `price` | Price as a number, when shown. |
| `priceText` | The price exactly as displayed (e.g. `£2,250`). |
| `currency` | Currency code (GBP), when a price is shown. |
| `location` | The ad's location (town, county). |
| `attributes` | Category-specific details as a list (e.g. for a car: year, mileage, seller type, fuel, engine size). |
| `image` | Main ad image URL, when present. |
| `category` | The category the ad was searched in. |
| `query` | The search keyword the ad was found with. |
| `url` | Link to the ad's page on Gumtree. |
| `collectedAt` | Timestamp when the row was collected. |

**Extra fields when Fetch full ad details is on (or when using Ad URLs):**

| Field | Description |
| --- | --- |
| `description` | Full ad description text. |
| `images` | Full image gallery (list of image URLs). |
| `attributes` | Detailed label→value attributes from the ad page. |
| `postedDate` | When the ad was posted, when available. |

### Use cases

- **Used car research** — track make, model, year, mileage and asking prices across the UK.
- **Property monitoring** — follow flats and houses to rent or for sale by area and price band.
- **Deal hunting** — surface the cheap listings and spot the cheapest ads before anyone else.
- **Price monitoring** — watch asking prices and new listings over time on a schedule.
- **Comparables & valuation** — pull comparable ads by category, location and price band.
- **Lead generation** — build lists of offers and sellers in a category for outreach.
- **Dashboards & automation** — feed clean, structured classifieds data into your own reports and pipelines.

### How to use the Gumtree Scraper

1. Add **Gumtree Scraper** to your Apify account and open its input.
2. Enter one or more **Search keywords** (e.g. `bmw`, `iphone`, `sofa`).
3. Pick a **Category** (or leave it on *All categories*) and optionally set a **Location** such as `london` or `manchester`.
4. Set **Max items per keyword** and the overall **Max items** cap.
5. (Optional) Turn on **Fetch full ad details** for descriptions and image galleries, or paste **Ad URLs** to enrich specific ads.
6. Click **Run** and export the results as JSON, CSV, Excel or XML.

### Input example

```json
{
  "searchQueries": ["bmw"],
  "category": "cars-vans-motorbikes",
  "location": "london",
  "maxItemsPerQuery": 100,
  "maxItems": 0,
  "fetchDetails": false
}
```

| Field | Description |
| --- | --- |
| `searchQueries` | Keywords to search for. Each is searched and paginated separately. |
| `category` | Restrict to a Gumtree category, or `all` for everything. |
| `location` | Optional UK location filter (e.g. `london`, `manchester`). |
| `productUrls` | Optional Gumtree ad URLs to fetch full details for directly. |
| `fetchDetails` | Also open each ad's page for description, gallery and posted date. |
| `maxItemsPerQuery` | Cap the ads collected per keyword. `0` = no limit. |
| `maxItems` | Overall cap across all keywords. `0` = no limit. |
| `maxConcurrency` | How many ad detail pages to fetch in parallel. |

### Output example

One flat JSON row per ad, ready to export to CSV, Excel, JSON or XML.

```json
{
  "adId": "1802312333",
  "title": "2016 BMW 320 GT",
  "price": 5995,
  "priceText": "£5,995",
  "currency": "GBP",
  "location": "Barry, Vale of Glamorgan",
  "attributes": ["2015", "140,916 miles", "Trade", "Diesel", "1,995 cc"],
  "image": "https://img.gumtree.com/....../86",
  "category": "cars-vans-motorbikes",
  "query": "bmw",
  "url": "https://www.gumtree.com/p/bmw/2016-bmw-320-gt/1802312333",
  "collectedAt": "2026-09-10T05:13:34.301Z"
}
```

### Frequently asked questions

**Which categories are covered?**
All of them — cars, vans & motorbikes, for-sale items, property, flats & houses, jobs, pets, business & services and community. Pick one category or search across everything.

**Can I search a specific town or city?**
Yes. Set the **Location** field to a UK place such as `london`, `manchester` or `birmingham` to narrow results.

**Can I get the full ad description and all photos?**
Yes. Turn on **Fetch full ad details**, or paste specific **Ad URLs**, to collect the full description, complete image gallery, detailed attributes and posted date.

**How do I find the cheapest deals?**
Export to CSV or Excel and sort by the `price` column, or filter by a price band — the numeric `price` field makes it easy to rank the cheap listings first.

**What export formats are supported?**
JSON, CSV, Excel and XML — plus the Apify API and integrations for automation and scheduling.

### Related scrapers

- SS.lv Latvia Classifieds Scraper
- Property24 Scraper — South Africa Property Listings
- Rightmove Scraper
- eBay Scraper

# Actor input Schema

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

One or more keywords to search Gumtree for (e.g. 'bmw', 'iphone', 'sofa'). Each keyword is searched separately and paginated automatically. Combine with Category and Location to narrow results. Leave empty if you only want to browse a whole Category/Location, or if you are using Ad URLs.

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

Restrict the search to a Gumtree category. Choose 'All categories' to search everything.

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

Optional. Restrict results to a UK location, e.g. 'london', 'manchester', 'birmingham'. Leave empty to search the whole UK.

## `productUrls` (type: `array`):

Optional. Paste one or more Gumtree ad page URLs to fetch their full details directly (title, price, description, full image gallery, attributes and posted date). Use this when you already have specific ads you want to enrich.

## `fetchDetails` (type: `boolean`):

Also open each ad's own page to collect the full description, image gallery, detailed attributes and posted date. This makes runs slower but returns richer data.

## `maxItemsPerQuery` (type: `integer`):

Maximum number of ads to collect for each search keyword (0 = no limit).

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

Overall cap across all keywords (0 = no limit; collect everything the searches return).

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

How many ad detail pages to fetch in parallel when fetching full details or ad URLs.

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

Optional. Proxy is not required — the scraper runs fine on a direct connection. Enable a proxy only if you want to route requests through specific IPs.

## Actor input object example

```json
{
  "searchQueries": [
    "bmw"
  ],
  "category": "all",
  "fetchDetails": false,
  "maxItemsPerQuery": 100,
  "maxItems": 0,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

The results as dataset items.

# 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": [
        "bmw"
    ],
    "location": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/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": ["bmw"],
    "location": "",
}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/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": [
    "bmw"
  ],
  "location": ""
}' |
apify call hipersoft/gumtree-scraper --silent --output-dataset

```

## MCP server setup

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