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

Gumtree UK search and listing pages as structured rows: title, price, location, posting date, images, category attributes and seller data. Optional full listing pages. Priced per delivered row, no start fee.

- **URL**: https://apify.com/deltaspider/gumtree-scraper.md
- **Developed by:** [delta spider](https://apify.com/deltaspider) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 28 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.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

### Gumtree listings in one dataset

Paste any Gumtree UK search or category URL and get its listings as structured rows: title, price, location, posting date, images, seller id and the category attributes Gumtree shows on the card. Turn on detail pages for the full description, every attribute, all images and the seller's rating and stats. Export to JSON, CSV or Excel, or read the dataset through the Apify API.

### Before you pick a Gumtree scraper, check five things

1. **Does it take the URL you already have?** Any `gumtree.com` search, category or listing URL works here, with the filters and sort order you set on the site.
2. **What does one row cost, and is there a start fee?** This Actor charges per delivered row and nothing else: $1 per 1,000 search rows, $2 per 1,000 full listing pages, on every plan. A run that delivers no rows costs nothing.
3. **Are detail pages priced separately?** Search rows and full listing pages are different products with different costs. They are two events here, so you never pay detail prices for search rows.
4. **Does it stop where you tell it to?** `maxResults` and Apify's maximum total charge are both exact: the Actor delivers up to the limit and stops before fetching pages it will not deliver.
5. **How many results can one search return?** Gumtree serves at most 50 pages of 30 per search, so one URL yields up to 1,500 rows. Split broad searches by category, location or price to go further.

### How to use it

1. Open [gumtree.com](https://www.gumtree.com), search or browse to a category, apply filters and sorting, and copy the URL from the address bar.
2. Paste one or more URLs into **Start URLs**. Listing URLs (`/p/...`) are fetched as full detail rows.
3. Set **Max listings per URL** (default 25) and, if you want full listing pages, tick **Scrape detail pages**.
4. Run the Actor and download the dataset.

Example: the first 100 cars in Leeds, newest first.

```json
{
  "startUrls": [{ "url": "https://www.gumtree.com/search?search_category=cars&search_location=leeds&sort=date" }],
  "maxResults": 100
}
```

Example: full listing pages for 50 pets adverts.

```json
{
  "startUrls": [{ "url": "https://www.gumtree.com/pets" }],
  "maxResults": 50,
  "scrapeDetails": true
}
```

### What you get

Every row starts with `_startUrl` (the input URL it came from) and `_position` (its one-based rank in that search; `null` for a listing URL you pasted directly). Dates are ISO strings: `postedDate` is the day, `postedDateTime` the exact time.

#### Search row

One row per listing on the search or category pages, as delivered on September 24, 2026. Image arrays are shortened here.

```json
{
  "_startUrl": "https://www.gumtree.com/for-sale/computers-software",
  "_position": 1,
  "id": 1802287755,
  "categoryId": 10919,
  "l1CategoryId": 2549,
  "l2CategoryId": 2515,
  "title": "Laptop Briefcase by Safeport Protection Systems.",
  "price": "£20.00",
  "postedDate": "2026-09-17",
  "imageUrl": "https://img.gumtree.com/ePR8PyKf84wPHx7_RYmEag/dd9840463c9d4f93a5_89e150dc5e6c/86",
  "additionalImageUrls": [
    "https://img.gumtree.com/ePR8PyKf84wPHx7_RYmEag/ba05729cf36f42ab8c_a0ce7eb2b685/86",
    "https://img.gumtree.com/ePR8PyKf84wPHx7_RYmEag/2bbd0fcd2c644b8f99_9c7022ee8fd2/86",
    "..."
  ],
  "imageIds": ["dd9840463c9d4f93a5_89e150dc5e6c", "ba05729cf36f42ab8c_a0ce7eb2b685", "..."],
  "status": "LIVE",
  "numberOfImages": 6,
  "urgent": false,
  "featured": true,
  "bumpup": false,
  "standout": false,
  "hasVideo": false,
  "premium": false,
  "course": false,
  "shortDescription": "Multi Function Laptop Briefcase by Safeport Protection Systems.\n\nDesigned for Salesmen or Business People on the go.\nI’m pretty certain it is leather, but if it isn’t, then it’s the most convincing imitation I have ever seen. It seems to be identical",
  "location": "Cambridge, Cambridgeshire",
  "attributes": [
    {
      "name": "Parcel Size",
      "value": "Large",
      "key": "parcel_size",
      "vipOrder": 1,
      "unit": ""
    },
    {
      "name": "Condition",
      "value": "As good as new",
      "key": "common_for_sale_condition",
      "vipOrder": 1,
      "unit": ""
    }
  ],
  "proAccount": false,
  "sellerId": 100408763,
  "accountId": 99867715,
  "distanceVO": "75 miles",
  "favouriteCount": 0,
  "adPostCode": "CB19GF",
  "adLocationId": "10000358",
  "supportShipping": true,
  "visibleOnMap": false,
  "postedDateTime": "2026-09-17T17:13:29.303Z",
  "url": "https://www.gumtree.com/p/laptop-cases-bags/laptop-briefcase-by-safeport-protection-systems./1802287755"
}
```

| Field                                                                                          | What it contains                                                                                    |
| ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| `id`, `url`                                                                                    | Gumtree's listing id and the listing's page. Use `id` to compare runs.                              |
| `title`, `price`, `shortDescription`                                                           | The card's title, displayed price (a string with currency) and description excerpt.                 |
| `location`, `adPostCode`, `latitude`, `longitude`, `distanceVO`                                | Where the item is, when Gumtree shows it.                                                           |
| `postedDate`, `postedDateTime`                                                                 | When the advert was posted.                                                                         |
| `imageUrl`, `additionalImageUrls`, `imageIds`, `numberOfImages`                                | The card image, the others, and their ids.                                                          |
| `attributes`                                                                                   | Category attributes such as year, mileage or bedrooms, each with `name`, `value`, `key` and `unit`. |
| `sellerId`, `accountId`, `proAccount`                                                          | The seller's ids and whether it is a business account.                                              |
| `status`, `featured`, `urgent`, `standout`, `premium`, `bumpup`, `hasVideo`, `supportShipping` | Listing status and the promotion flags Gumtree sets.                                                |
| `categoryId`, `l1CategoryId`, `l2CategoryId`                                                   | Gumtree's category ids.                                                                             |

#### Detail row

With **Scrape detail pages**, or for a pasted listing URL, each row is the full listing page. Arrays are shortened here.

```json
{
  "_startUrl": "https://www.gumtree.com/pets",
  "_position": 4,
  "id": 1802109273,
  "categoryName": "Other Pets Equipment & Accessories",
  "attributes": [
    {
      "name": "Posted",
      "value": "26 days ago",
      "key": "Posted",
      "vipOrder": 0,
      "unit": ""
    },
    {
      "name": "Condition",
      "value": "As good as new",
      "key": "common_for_sale_condition",
      "vipOrder": 1,
      "unit": ""
    }
  ],
  "allAttributes": [
    {
      "name": "Posted",
      "value": "26 days ago",
      "key": "Posted",
      "vipOrder": 0,
      "unit": ""
    },
    {
      "name": "Condition",
      "value": "As good as new",
      "key": "common_for_sale_condition",
      "vipOrder": 1,
      "unit": ""
    }
  ],
  "description": [
    "Selling our amazing automatic litter tray which we bought in February this year.",
    "Unfortunately we had to rehome our kitten in June so this is no longer needed and was only used for 3 months.",
    "This tray was a true life saver for us and took all the hassle out of daily cleaning and also got rid of the litter smell.",
    "You top it up with litter every 2 to 3 weeks and empty the tray at the bottom every 2 weeks. It does everything else by itself and has a built in air freshner too. All controlled automatically and/or via the app which tells you all the health metrics about your cat's toilet visits and it weighs your cat too.",
    "Includes full manual and a roll of bags for the litter tray and a mat. ",
    "This is one of the largest automatic litter trays you can buy at 90L so its suitable for multiple cats.",
    "You will never have to scoop the litter again!",
    "Bought for two hundred and fifty when new. Selling at a low price for quick sale.",
    ""
  ],
  "favouriteCount": 3,
  "price": "£175.00",
  "priceInPounds": 175,
  "seoPrice": "175.00",
  "title": "Devoko Automatic Cat Litter Tray 90L.",
  "postingSince": "15+ years",
  "l1Category": 2526,
  "l1CategorySeoName": "pets",
  "leafCategoryId": 1018,
  "l2CategoryId": 12647,
  "seoL1Category": "Pets",
  "seoL2Category": "Equipment & Accessories",
  "sellerOtherAds": "/sellerads/1802109273?userId=4768963&publicUserId=fff4fd4a1bf47221526a8bfdb1c74a54",
  "showLegalDisclaimer": false,
  "pro": false,
  "containsCallTrackingFeature": false,
  "sellerType": null,
  "subArea": "Ferry Road",
  "isCurrentUserSeller": false,
  "isFromMotorsFeed": false,
  "currentPageUrl": "/pets/pet-equipment-accessories/other-pets-equipment-accessories/uk/ferry-road",
  "scoreAndReviews": {
    "total": 2,
    "average": 5,
    "breakdown": {
      "1": 0,
      "2": 0,
      "3": 0,
      "4": 0,
      "5": 2
    },
    "type": "GT"
  },
  "featured": false,
  "standout": false,
  "urgent": false,
  "bumpup": false,
  "userSentMessage": false,
  "area": "Edinburgh",
  "locationId": 10090,
  "postcode": "EH45PX",
  "gfjLocationPostcode": "EH45PX",
  "gfjLocationLocality": "Ferry Road",
  "gfjLocationRegion": "Edinburgh",
  "gfjLocationCountry": "GB",
  "gfjHiringOrganizationName": "-",
  "gfjDatePostedInISOFormat": "2026-08-29",
  "gfjValidThroughInISOFormat": "2026-11-27",
  "gfjEmploymentType": "OTHER",
  "gfjWorkingFromHome": false,
  "gfjIndustry": "Other Pets Equipment & Accessories",
  "createdDate": 1788001352524,
  "lastModifiedDate": 1789923676059,
  "locAvailable": false,
  "priceStatus": "miss",
  "postedDate": "2026-08-29",
  "postedDateTime": "2026-08-29T11:02:35.853Z",
  "url": "https://www.gumtree.com/p/other-pets-equipment-accessories/devoko-automatic-cat-litter-tray-90l./1802109273",
  "location": "Ferry Road, Edinburgh",
  "sellerRating": {
    "total": 2,
    "average": 5,
    "type": "GT",
    "breakdown": {
      "1": 0,
      "2": 0,
      "3": 0,
      "4": 0,
      "5": 2
    },
    "contactName": "Maz",
    "accountPublicId": "fff4fd4a1bf47221526a8bfdb1c74a54"
  },
  "sellerStats": {
    "postingSince": "15+ years",
    "replySpeed": null,
    "replyRate": null
  },
  "imageUrl": "https://img.gumtree.com/ePR8PyKf84wPHx7_RYmEag/ccbebb3f5f3848be99_e41e209fbc4b/86",
  "additionalImageUrls": [
    "https://img.gumtree.com/ePR8PyKf84wPHx7_RYmEag/a928a7ffb6a5448b99_6aafa1088435/86",
    "https://img.gumtree.com/ePR8PyKf84wPHx7_RYmEag/04c16765e3c2476d95_e708a3946e34/86",
    "..."
  ],
  "sellerId": 4768963
}
```

Detail rows add `description` (an array of paragraphs), `allAttributes` and grouped `attributes`, `priceInPounds` as a number, `location` plus `area`, `postcode` and `locationId`, `sellerType`, `sellerRating`, `sellerStats`, `sellerOtherAds`, `createdDate` and `lastModifiedDate`, the full `additionalImageUrls`, and for job adverts the `gfj*` fields. Fields depend on what Gumtree publishes and can be null or absent.

### Pricing

Pay per delivered row, on every Apify plan, with no start fee:

| Event                                | Price  | 1,000 rows |
| ------------------------------------ | ------ | ---------- |
| Search row (`listing`)               | $0.001 | $1.00      |
| Full listing page (`listing-detail`) | $0.002 | $2.00      |

A run that delivers nothing has no Actor charge. Apify's maximum total charge caps spending exactly: the Actor delivers what fits and stops before fetching more, so a $0.012 limit on a 40-row search delivers 12 rows, and the same limit on two searches plus a listing URL delivers 10 search rows and 1 listing page. Rows already delivered remain billable if a run later fails. The [Pricing tab](https://apify.com/deltaspider/gumtree-scraper/pricing) is the authoritative statement of the current terms.

### Limits and common questions

**Why did I get fewer rows than `maxResults`?** The limit is a ceiling. A search stops at its last page (Gumtree serves at most 1,500 per search), at your limit, or at your maximum total charge. With **Scrape detail pages** on, a listing that appears on two pages of the same search is fetched and delivered once, so the count can be one short.

**Can the same listing appear twice?** In search-row mode, yes: Gumtree reorders results while a run pages through them, so a listing can show up on two pages and be delivered on both. Deduplicate by `id` if that matters to you. A 300-row test run returned 285 distinct listings.

**Which Gumtree sites work?** `gumtree.com` (United Kingdom). Other domains are skipped with a warning.

**Do I need a proxy?** No. Runs use Apify Proxy automatically; there is no proxy input.

**What about the cars category home page?** `gumtree.com/cars-vans-motorbikes/cars` is a landing page without results. The Actor runs the cars search for it instead, keeping any filters in the URL.

**What happens when a run fails?** Rows already saved stay in the dataset. A search page, or a listing URL you pasted, that cannot be fetched after retries fails the run. A listing page reached through **Scrape detail pages** that cannot be fetched is skipped and the run continues.

**Is the data personal?** Rows contain what Gumtree shows publicly on its pages: listing content, locations, seller display names and ids. Phone numbers behind the "reveal" button are never fetched. Use the data in line with Gumtree's terms and applicable law.

### Input reference

| Input           | How to use it                                                                      |
| --------------- | ---------------------------------------------------------------------------------- |
| `startUrls`     | One or more `gumtree.com` search, category or listing URLs. Required.              |
| `maxResults`    | Positive integer, the most rows to deliver per search or category URL. Default 25. |
| `scrapeDetails` | `true` to fetch each listing's page instead of its search card. Default `false`.   |

### API, schedules and support

Use the [API tab](https://apify.com/deltaspider/gumtree-scraper/api) for ready-made requests and client code. Schedule the same input in Apify to collect snapshots over time and compare rows by `id`.

Report a problem through the [Issues tab](https://apify.com/deltaspider/gumtree-scraper/issues) with the run id and what you expected. This independent Actor is not affiliated with Gumtree.

# Actor input Schema

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

URLs to start with. You can add individual detail pages or search/listings pages, or both.

## `scrapeDetails` (type: `boolean`):

Tick to scrape detailed info of listings (description, attributes, all images, seller stats). Each detail page is one extra request and is billed as a listing detail instead of a listing.

## `maxResults` (type: `integer`):

Maximum number of listings to scrape per start URL. Gumtree serves at most 50 pages of 30 listings per search.

## `isCanary` (type: `boolean`):

Marks this run as a Fleet Monitor canary. When enabled, the Actor ignores the rest of the input and scrapes its fixed canary input (five full listing pages from the computers category), so canary runs stay a stable baseline.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.gumtree.com/search?search_category=cars"
    }
  ],
  "scrapeDetails": false,
  "maxResults": 25,
  "isCanary": false
}
```

# 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=cars"
        }
    ],
    "maxResults": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("deltaspider/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=cars" }],
    "maxResults": 25,
}

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

```

## MCP server setup

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