# Pets4Homes Scraper (`vivid-softwares/pets4homes-scraper`) Actor

Scrape Pets4Homes, the UK's largest pet classifieds site. Paste any search, advert or breeder URL to get puppies, kittens and every other pet for sale, adoption or stud, with prices, breed, age, health checks, KC registration, licence details, litters, views, photos and videos.

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

## Pricing

$15.00 / 1,000 pet 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

### What does Pets4Homes Scraper do?

**Pets4Homes Scraper** extracts pet adverts from [Pets4Homes](https://www.pets4homes.co.uk), the UK's largest pet classifieds site. Paste **any Pets4Homes search, advert or breeder URL** and get every matching advert as clean JSON: **puppies, kittens, rabbits, birds, reptiles, horses and every other species, for sale, for adoption or at stud**. Each advert includes the price and deposit, breed, parents' breeds and generation, date of birth and age, **every pet in the litter with its sex, price and status**, and the **health checks**: vaccinations, vet health check, worming, microchip, parents' health tests and **KC registration**. You also get **views and favourites**, the full description, **every photo and video**, the town and county, and for **licensed breeders the council licence number and licensing authority**.

It is a **dedicated Pets4Homes scraper** and a practical **UK pet listings API**. Run it from Apify Console, call it over the API, schedule it, or connect it to AI agents through MCP.

- 🐶 **Puppies and dogs** for sale, for adoption from rescues, and at stud
- 🐱 **Kittens and cats** for sale, for adoption and at stud
- 🐰 **Rabbits, rodents, reptiles, birds, poultry, fish, livestock, horses and invertebrates**
- 🧬 **300+ dog breeds and 90 cat breeds**, crossbreeds and generations (F1, F1B, F2 …)
- 📍 Every UK country, county and town with a radius search
- 🩺 Health checks, vaccinations, microchip, KC registration and **breeder licence details**
- 📉 **Delisting report**: see which adverts sold, were reserved or rehomed, or were removed since your last run

### Why use this Pets4Homes scraper?

- **Every advert, not just the first page.** Paste one URL and the Actor collects every matching advert, up to your limit. Pets4Homes shows at most about 10,000 results for one search; bigger searches are split automatically so nothing is cut off.
- **Complete, not reshuffled.** Pets4Homes' default "relevance" order reshuffles between pages, so about 1 in 15 adverts never appears when you page through it. The Actor reads in a stable order and also includes the boosted adverts, so you get every advert once. We checked this against the site's own counts.
- **Every seller's other adverts**: a link to the seller's adverts page and a seller ID to group adverts, without ever naming private sellers.
- **Litter-level detail**: each pet's name, sex, price, status (Available, Reserved, Rehomed), ready-to-leave date and photos.
- **Demand signals**: views and favourites for every advert.
- **Only new adverts on repeat runs**: adverts you already received are skipped and not charged.
- **Delisting report**: find out which adverts disappeared and why.
- **Fast**: about 27 full adverts a second (1,500 adverts in under a minute).

Common uses:

- **Pet market research**: prices by breed, region and age; supply of popular breeds such as Cockapoo, Cavapoo, French Bulldog and Ragdoll
- **Price tracking** for breeds and litters over time
- **Breeder and rescue research**: licensed breeders with their licence numbers and councils, rescues and their adverts
- **Welfare and compliance monitoring**: unlicensed litters, very young puppies, missing health checks
- **Pet-services lead lists** built from public business details of licensed breeders and rescues
- **Pet data for AI agents**: structured UK pet adverts for assistants and automations

### How to scrape Pets4Homes

#### Option 1: paste a Pets4Homes URL (recommended)

1. Go to [pets4homes.co.uk](https://www.pets4homes.co.uk) and search. Add any filters you like: breed, location and radius, price, sex, age, licensed breeders, KC registered and so on.
2. Copy the results URL from your browser, for example `https://www.pets4homes.co.uk/sale/puppies/cockapoo/?price=500,1500`.
3. Paste it into **Pets4Homes search, advert or seller URLs**, set **Maximum listings** and click **Start**.

You can paste as many URLs as you like in one run. These Pets4Homes pages all work:

- Species pages: `/sale/puppies/`, `/sale/kittens/`, `/sale/rabbits/`, `/sale/horses/` …, all pets `/sale/pets/`, everything `/search/`
- Adoption and stud: `/adoption/dogs/`, `/adoption/cats/`, `/stud/dogs/`, `/stud/cats/`
- Breed pages: `/sale/puppies/cockapoo/`, `/sale/kittens/ragdoll/`
- Location pages: `/sale/puppies/near-me/united-kingdom/england/greater-london/london/`, `/sale/kittens/ragdoll/united-kingdom/scotland/`
- Any filtered search: price, keyword, sex, age range, generation, licensed breeders, ID verified, KC registered dogs, registered cats, breeder rating, crossbreeds, radius and sort order
- Single adverts: `/classifieds/…`
- Breeder, rescue and seller pages (`/breeder/…`, `/shelter/…`, `/user/…`): you get all of that seller's adverts

#### Option 2: use the optional search builder

Pick one or more **Species**, **Advert types** and optional **Breeds** and **Locations**, then add any of Pets4Homes' filters: radius, price, keyword, sex, age range, generation, council licensed breeders, KC registered dogs, GCCF/TICA/FIFe registered cats, ID verified sellers, breeder rating and crossbreeds. Each species is searched for every advert type and location. You can combine URLs and builder searches in one run, and duplicates are removed.

Download results as JSON, CSV, Excel or HTML, or read them through the API.

### Input

The main input is `startUrls`. The other search fields belong to the optional search builder.

| Field | Description |
|---|---|
| `startUrls` | **Main input.** Any Pets4Homes search, breed, location, adoption, stud, advert, breeder or rescue page. Every matching advert is collected. |
| `species` | `dogs`, `cats`, `rodents`, `reptiles`, `rabbits`, `livestock`, `poultry`, `birds`, `fish`, `horses`, `invertebrates` |
| `advertTypes` | `sale` (default), `adoption`, `stud` (adoption and stud: dogs and cats) |
| `breeds` | 670+ Pets4Homes breeds, for example `pets.dogs.breed.cockapoo` or `pets.cats.breed.ragdoll` |
| `includeCrossbreeds` | Also return crossbreeds with a parent of the chosen breed |
| `locations` | 548 Pets4Homes locations: England, Scotland, Wales, Northern Ireland, every county and 390 towns |
| `radiusMiles` | 5, 10, 15, 30, 50, 75, 100 or 150 miles (Pets4Homes default: 50) |
| `minPrice`, `maxPrice` | Price in pounds |
| `keyword` | Words in the advert, such as `merle`, `toy` or `working` |
| `sex` | Female, male, mixed |
| `ageRanges` | 0–3 months, 4–12 months, 1–2 years, 3–5 years, older than 5 years |
| `generations` | P, F1, F2, F3, F4, F1B, F1BB, F2B, Multigen |
| `licensedBreedersOnly`, `kcRegisteredOnly`, `registeredCatsOnly`, `idVerifiedOnly`, `breederRating4Plus` | Pets4Homes' "popular filters" |
| `sortBy` | Newest first (default), oldest first, cheapest first, most expensive first |
| `maxItems` | Maximum number of saved adverts (default 50) |
| `scrapeDetails` | Read each advert page for health checks, litter, views, videos and the full description (default on) |
| `includeDuplicates` | Include adverts from previous runs (default off) |
| `reportDelisted` | Report adverts that disappeared since your last run of the same search (default on, free) |
| `proxyConfiguration` | Not needed; see Tips |

#### Example input: Pets4Homes URLs

```json
{
  "startUrls": [
    { "url": "https://www.pets4homes.co.uk/sale/puppies/cockapoo/?price=500,1500" },
    { "url": "https://www.pets4homes.co.uk/adoption/dogs/" }
  ],
  "maxItems": 500
}
```

#### Example input: search builder

```json
{
  "species": ["dogs"],
  "breeds": ["pets.dogs.breed.cavapoo", "pets.dogs.breed.cockapoo"],
  "locations": ["england/greater-manchester/manchester"],
  "radiusMiles": "30",
  "maxPrice": 1500,
  "ageRanges": ["1"],
  "licensedBreedersOnly": true,
  "maxItems": 200
}
```

### Output

Each advert is one dataset item. Fields that Pets4Homes does not show for an advert are left out rather than guessed.

#### Example advert

```json
{
  "listing_id": "f6263b33-3ea4-4544-a253-4a899f22ff8e",
  "listing_number": "S-jP2hfzi",
  "url": "https://www.pets4homes.co.uk/classifieds/s-jp2hfzi-miniature-dachshund-puppies-kelso/",
  "title": "Miniature dachshund puppies",
  "advert_type": "For sale",
  "species": "Dogs",
  "breed": "Dachshund",
  "father_breed": "Dachshund",
  "mother_breed": "Dachshund",
  "generation": "P",
  "price": 1000,
  "price_text": "£1,000",
  "currency": "GBP",
  "price_on_application": false,
  "deposit": 100,
  "date_of_birth": "2026-08-25",
  "age": "4 weeks",
  "ready_to_leave": "2026-10-19",
  "males": 3,
  "females": 1,
  "number_available": 4,
  "pets": [
    {
      "name": "Dachshund 1",
      "sex": "Male",
      "price": 1300,
      "status": "Available",
      "ready_to_leave": "2026-10-19",
      "deposit": 100,
      "images": ["https://assets.pets4homes.co.uk/originalImages/41c89ba5-9430-4a09-9f25-8cdd621b992e/originalImage.jpeg"],
      "description": "The only long haired out the litter, lovely nature and very cuddly"
    },
    "…"
  ],
  "vaccinated": true,
  "health_checked": true,
  "parents_health_tested": false,
  "wormed_and_flea_treated": true,
  "microchipped": true,
  "neutered": false,
  "kc_registered": false,
  "viewable_with_mother": true,
  "original_breeder": true,
  "town": "Kelso",
  "county": "Scottish Borders",
  "region": "Scotland",
  "country": "United Kingdom",
  "description": "Lovely litter of puppies. Mum and dad both family pets and great nature. Just started weaning and going well",
  "main_image_url": "https://assets.pets4homes.co.uk/originalImages/6b4aa5db-43ea-4e56-ac14-85e69884c372/originalImage.jpeg",
  "images": ["https://assets.pets4homes.co.uk/originalImages/6b4aa5db-43ea-4e56-ac14-85e69884c372/originalImage.jpeg", "…"],
  "image_count": 13,
  "mother_image_url": "https://assets.pets4homes.co.uk/originalImages/163dc89d-6506-4bf7-be27-2a547d5f9866/originalImage.jpeg",
  "video_count": 0,
  "date_created": "2026-09-21T00:33:45.553Z",
  "date_published": "2026-09-21T00:47:46.882Z",
  "date_refreshed": "2026-09-28T07:46:12.017Z",
  "views": 369,
  "favourites": 4,
  "status": "Active",
  "listing_package": "Basic",
  "boosted": false,
  "seller_type": "Individual",
  "seller_is_business": false,
  "seller_licensed_breeder": false,
  "seller_kc_assured": false,
  "seller_id_verified": false,
  "seller_reviews_count": 0,
  "seller_active_adverts": 1,
  "seller_member_since": "2026",
  "seller_average_response_hours": 0.8,
  "seller_last_active": "2026-09-28T13:27:40.735Z",
  "seller_id": "b5d9527e-9b13-4b53-9904-c6abbf630082",
  "seller_adverts_url": "https://www.pets4homes.co.uk/user/seller-b5d9527e-9b13-4b53-9904-c6abbf630082/",
  "search_url": "https://www.pets4homes.co.uk/sale/puppies/dachshund/?sort=newest-first",
  "detail_page_complete": true,
  "seen_in_previous_run": false,
  "scraped_at": "2026-09-28T14:01:29+00:00"
}
```

A licensed breeder's advert also has `seller_name`, `seller_profile_url`, `licence_number` (for example `21/12807/ANIMAL`), `licence_authority` (for example `North East Derbyshire District Council`) and `licence_status`. A rescue's advert has the rescue's name and profile link.

#### Output fields

| Group | Fields |
|---|---|
| Advert | `listing_id`, `listing_number`, `url`, `title`, `advert_type` (For sale, For adoption, For stud), `status`, `listing_package`, `boosted`, `featured`, `distance_miles` (location searches), `preferred_contact`, `search_url` |
| Pet | `species`, `breed`, `father_breed`, `mother_breed`, `generation`, `date_of_birth`, `age`, `ready_to_leave`, `sex`, `males`, `females`, `number_available`, `other_attributes` (for example height, discipline and country of origin for horses) |
| Litter | `pets`: name, sex, price, status, ready-to-leave date, deposit, photos and description of each pet |
| Price | `price`, `price_text`, `currency`, `price_on_application`, `deposit`, `buyer_protection_fee` |
| Health and papers | `vaccinated`, `health_checked`, `parents_health_tested`, `wormed_and_flea_treated`, `microchipped`, `neutered`, `kc_registered`, `registered_with` (GCCF, TICA, FIFe), `viewable_with_mother`, `original_breeder` |
| Location | `town`, `county`, `region`, `country` |
| Description and media | `description`, `main_image_url`, `images`, `image_count`, `mother_image_url`, `videos` (MP4), `video_count` |
| Dates and demand | `date_created`, `date_published`, `date_refreshed`, `views`, `favourites` |
| Seller | `seller_type`, `seller_is_business`, `seller_licensed_breeder`, `seller_kc_assured`, `seller_id_verified`, `seller_email_verified`, `seller_phone_verified`, `seller_rating`, `seller_reviews_count`, `seller_active_adverts`, `seller_active_pets`, `seller_member_since`, `seller_average_response_hours`, `seller_delivers`, `seller_last_active`, `seller_confirmed_payments`, `seller_facebook_verified`, `seller_google_verified`, `seller_full_service_breeder`, `seller_id`, `seller_adverts_url` (the seller's page with all their adverts) |
| Business sellers only | `seller_name`, `seller_logo_url`, `seller_profile_url`, `licence_number`, `licence_authority`, `licence_status`, `kc_assured_number` |
| Run | `seen_in_previous_run`, `detail_page_complete`, `scraped_at` |

The Output tab has two views: **Overview** and **Health and breeder**. A `RUN_SUMMARY` record in the key-value store lists advert URLs that are no longer on Pets4Homes (`unavailable_urls`) and any that could not be loaded (`failed_urls`). The `DELISTED_LISTINGS` record holds the delisting report (see below).

### Pagination, duplicates and new-advert monitoring

- The Actor reads each search page by page until it reaches the end of the results or your **Maximum listings**, and it includes the boosted adverts that Pets4Homes shows in their own block.
- Pets4Homes shows at most about 10,000 results for one search. Bigger searches (such as all pets for sale) are split into advert types, species and then price bands with the same filters, so nothing is cut off.
- **Within a run**, each advert is saved once, even if it appears in several searches.
- **Across runs**, the Actor remembers the adverts it has already saved for your account and skips them by default, so scheduled runs only return and charge for **new adverts**. Turn on **Include listings from previous runs** to get everything again; `seen_in_previous_run` tells you which ones you had before. The history is kept in a dataset named `pets4homes-history-<your user ID>` in your own Apify account.

### Delisted-advert report

Scheduled runs also tell you which adverts **disappeared** since the last run of the same search, so you can track how fast breeds sell or get rehomed.

- The Actor remembers every advert each search returned. On the next run of the same URL or builder search, adverts that are no longer in the results are saved to the `DELISTED_LISTINGS` record in the run's key-value store (also linked from the Output tab).
- Each one is re-checked on Pets4Homes and gets a `reason`: `removed_from_pets4homes` (the advert is gone), `no_longer_active`, `all_pets_reserved_or_rehomed`, or `no_longer_matches_search` (for example, the price changed), with its `current_status` and `current_price`.
- Every entry keeps the `title`, `last_price`, `last_status`, `last_seen_at` and the `search_url` it came from.
- The report is free: it is not charged as results. It needs the whole search to be read, so set **Maximum listings** above the number of results. Searches cut short by the limit are skipped for that run and compared again next time.

### Use the Pets4Homes scraper through the API

```bash
curl -X POST "https://api.apify.com/v2/acts/vivid-softwares~pets4homes-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": [{"url": "https://www.pets4homes.co.uk/sale/puppies/cockapoo/"}], "maxItems": 20}'
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("vivid-softwares/pets4homes-scraper").call(run_input={
    "species": ["cats"],
    "breeds": ["pets.cats.breed.ragdoll"],
    "locations": ["scotland"],
    "maxItems": 100,
})
for advert in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(advert["price_text"], advert["breed"], advert.get("age"), advert["town"])
```

#### JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('vivid-softwares/pets4homes-scraper').call({
    startUrls: [{ url: 'https://www.pets4homes.co.uk/sale/puppies/french-bulldog/' }],
    maxItems: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((ad) => `${ad.price_text} - ${ad.title} (${ad.views ?? 0} views)`));
```

### Pet data for AI agents and MCP

The Actor works with the [Apify MCP server](https://mcp.apify.com), so assistants such as Claude, ChatGPT or Cursor can call it as a tool. Add `vivid-softwares/pets4homes-scraper` to your MCP configuration and ask, for example:

- "What is the average price of a Cockapoo puppy in Greater Manchester this week?"
- "List Ragdoll kittens in Scotland from licensed breeders that are vaccinated and microchipped."
- "Which rescues have the most dogs for adoption right now?"

### How this Pets4Homes scraper compares

We checked Apify Store in September 2026. There was no other Pets4Homes Actor, so we compared this one with the other pet-listing Actors in the Store (all for US sites):

| What you get | This Actor | Other pet-listing Actors in Apify Store |
|---|:---:|:---:|
| Pets4Homes and UK pet adverts | ✅ | None |
| Every species, not only dogs | ✅ | 1 of 3 |
| For sale, adoption **and** stud adverts | ✅ | None |
| Paste search URLs **and** use a search builder | ✅ | None |
| Vet health check, worming and parents' health tests | ✅ | None |
| Breeder licence number and licensing council | ✅ | None |
| Views and favourites | ✅ | None |
| Video URLs | ✅ | 1 of 3 |
| Only new adverts on repeat runs; skipped adverts cost nothing | ✅ | None |
| Delisting report that says **why** an advert went (rehomed, reserved, removed) | ✅ | None |
| No per-run start fee | ✅ | None |

In short: one run gives you the market (every advert, in full), the health and licence details, the demand (views and favourites) and the history (new and delisted adverts) for the UK's largest pet classifieds site.

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

This Actor uses **pay-per-event** pricing: **$15 per 1,000 pet listings**, which is $0.015 for each advert saved to the dataset. You are not charged for search pages, retries, invalid input, adverts that are no longer available, or adverts skipped because you already received them. For example, 500 Cockapoo adverts cost $7.50.

### Tips

- Paste the URL you see on Pets4Homes. Every filter in it is applied on Pets4Homes itself. Searches using Pets4Homes' default "relevance" order are read newest first instead, because relevance order reshuffles between pages and loses adverts.
- **Speed:** with full details the Actor saves about 27 adverts a second at the default 1 GB memory (1,500 adverts in under a minute), and about 38 a second at 2 GB.
- Turn off **Get full advert details** for faster, cheaper-to-run searches (about 35 adverts a second) with the search-result fields only (price, breed, age, litter counts, town, photos, seller type). The health checks, litter, views, videos and the full description come from the advert page.
- **Proxy:** not needed. The Actor connects directly, which is fastest. If Pets4Homes ever starts refusing requests, the run switches to Apify Proxy by itself. The Actor never tries to get around CAPTCHAs or other bot protection.
- Schedule a daily run to monitor a breed or area: only new adverts are returned and charged, and `DELISTED_LISTINGS` shows what was rehomed, reserved or removed.

### Data limitations

- **Private sellers** are never identified. Their names, phone numbers, email addresses and exact locations are never returned (`seller_adverts_url` is a name-free link to their adverts page), and phone numbers and email addresses typed into their advert text are removed. Their adverts have `seller_type: Individual`.
- Seller names and profile links are returned only for business sellers, as Pets4Homes shows them publicly: council licensed breeders, Kennel Club Assured breeders, rescues and companies.
- Locations are the town, county and country. Pets4Homes does not show street addresses or postcodes.
- Health checks, KC registration and litter details are only present when the seller provides them. Views and favourites are Pets4Homes' own figures at the time of the run.
- In search-result-only mode, `description` is the short preview Pets4Homes shows in its results.

### Public contact data policy

The Actor only returns seller details that Pets4Homes shows publicly for businesses: the licensed breeder's, rescue's or company's name, profile page and licence details. It never returns private sellers' details or anything behind Pets4Homes' messaging. If you use breeder data for outreach, follow UK GDPR and PECR.

### FAQ

**What is the best Pets4Homes scraper on Apify?** In September 2026 this was the only Pets4Homes Actor in Apify Store. It covers every species and advert type (sale, adoption, stud), returns health checks, KC registration, breeder licence details, every pet in the litter, views and favourites, and reports delisted adverts. On repeat runs you pay only for new adverts.

**Is there an official Pets4Homes API?** Pets4Homes does not offer a public listings API. This Actor gives you structured Pets4Homes data through the Apify API.

**Is it legal to scrape Pets4Homes?** The Actor collects publicly available advert information, paces its requests and never identifies private sellers. You are responsible for how you use the data, including data protection rules. If in doubt, ask a lawyer.

**Can I scrape a single breed or town?** Yes. Paste a breed or location page such as `pets4homes.co.uk/sale/puppies/cockapoo/`, or pick breeds and locations in the search builder.

**Does it get more than the first page of results?** Yes. It collects every matching advert up to your limit, and splits very large searches so nothing is lost.

**Does it return duplicate adverts?** No. Adverts are de-duplicated within a run, and adverts from your previous runs are skipped by default.

**Can you add a field or a custom version?** Open an issue on the Issues tab.

*This Actor is not affiliated with, endorsed by or connected to Pets4Homes.*

# Actor input Schema

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

The easiest way to use this Actor: search on <a href="https://www.pets4homes.co.uk" target="_blank">pets4homes.co.uk</a> with any filters, then paste the results URL here. Every matching advert is scraped, not just the first page. Works with puppies, kittens and every other species, breed and location pages, adoption and stud searches, keyword searches, single adverts and breeder or rescue profile pages. Leave empty to use the search builder below.

## `species` (type: `array`):

Optional search builder, used instead of or as well as URLs. Pick one or more species; each is searched for every advert type and location.

## `advertTypes` (type: `array`):

For sale, for adoption (rescues) or for stud. Adoption and stud adverts exist for dogs and cats only.

## `breeds` (type: `array`):

Only these breeds. Each breed applies to its own species; picking breeds without a species searches their species.

## `includeCrossbreeds` (type: `boolean`):

With a pure breed picked, also return crossbreeds with a parent of that breed (dogs and cats), like the site’s own switch.

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

Leave empty to search the whole UK. Countries, counties and towns as listed on Pets4Homes. For other places, search on the site and paste the URL.

## `radiusMiles` (type: `string`):

Distance around each town. Pets4Homes uses 50 miles when this is left empty.

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

Only adverts priced at or above this.

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

Only adverts priced at or below this.

## `keyword` (type: `string`):

Words in the advert, for example merle, toy or working. At least 3 characters.

## `sex` (type: `array`):

Female, male or (for birds, rabbits and similar) mixed.

## `ageRanges` (type: `array`):

Dogs and cats.

## `generations` (type: `array`):

Dog crossbreed generation.

## `licensedBreedersOnly` (type: `boolean`):

Dogs. Every advert still shows the seller’s licence details when there are any.

## `kcRegisteredOnly` (type: `boolean`):

Dogs.

## `registeredCatsOnly` (type: `boolean`):

Cats.

## `idVerifiedOnly` (type: `boolean`):

Sellers whose ID Pets4Homes has verified.

## `breederRating4Plus` (type: `boolean`):

Only sellers with an average review rating of 4 or more.

## `sortBy` (type: `string`):

Order of results. Pets4Homes’ “relevance” order reshuffles between pages, so it is not offered; pasted relevance URLs are read newest first.

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

Stop after saving this many adverts. Each saved advert is one billable result.

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

Reads each advert for the health checks, vaccinations, KC registration, microchip, licence details, every pet in the litter, views, videos and the full description. Turn off for faster runs with the search-result fields only.

## `includeDuplicates` (type: `boolean`):

Off by default: adverts you already received in an earlier run are skipped and not charged, so scheduled runs only return new adverts. Turn on to get every matching advert again.

## `reportDelisted` (type: `boolean`):

Remembers every advert each search returns. On the next run of the same search, adverts that have gone are saved to the DELISTED\_LISTINGS record with the reason: removed, no longer active, all pets reserved or rehomed, or no longer matching. Free. Works when the whole search is read, so set Maximum listings above the search size.

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

Not needed: the Actor connects directly (fastest) and switches to Apify Proxy by itself if Pets4Homes starts refusing requests. Set a proxy here to always use it.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.pets4homes.co.uk/sale/puppies/cockapoo/"
    }
  ],
  "advertTypes": [
    "sale"
  ],
  "includeCrossbreeds": false,
  "radiusMiles": "",
  "licensedBreedersOnly": false,
  "kcRegisteredOnly": false,
  "registeredCatsOnly": false,
  "idVerifiedOnly": false,
  "breederRating4Plus": false,
  "sortBy": "newest-first",
  "maxItems": 50,
  "scrapeDetails": true,
  "includeDuplicates": false,
  "reportDelisted": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

No description

## `delisted` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# 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.pets4homes.co.uk/sale/puppies/cockapoo/"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("vivid-softwares/pets4homes-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.pets4homes.co.uk/sale/puppies/cockapoo/" }],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("vivid-softwares/pets4homes-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.pets4homes.co.uk/sale/puppies/cockapoo/"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call vivid-softwares/pets4homes-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vivid-softwares/pets4homes-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/EzgnfBnqPT1jwEZ7j/builds/2BozyKc07gStAabv9/openapi.json
