Dogs4homes APIdogs4homes.co.uk ↗
Search and retrieve dog adoption listings from Pets4Homes. Filter by breed, size, and child compatibility. Get full profiles with images, location, and seller info.
What is the Dogs4homes API?
The Pets4Homes API exposes 2 endpoints for searching and retrieving dog adoption listings from dogs4homes.co.uk (Pets4Homes). The search_dogs endpoint returns paginated results with up to 8 fields per listing—including breed, price, location, and a description preview—while get_dog_details delivers a full profile with images, seller information, neutered status, and a view count for any individual listing identified by its slug.
curl -X GET 'https://api.parse.bot/scraper/a05e0422-8811-4336-a508-33925ec23b46/search_dogs?page=1&breed=mixed-breed&children_compatible=False' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace dogs4homes-co-uk-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Pets4Homes Adoption API — search dogs and inspect detailed profiles."""
from parse_apis.pets4homes_adoption_api import Pets4Homes, DogListing, ListingNotFound
client = Pets4Homes()
# Search for mixed-breed dogs available for adoption, capped at 5 results.
for listing in client.doglistings.search(breed="mixed-breed", limit=5):
print(listing.title, listing.price, listing.location)
# Drill into the first result's full details via the sub-resource.
listing = client.doglistings.search(limit=1).first()
if listing:
detail = listing.details.get()
print(detail.title, detail.description[:100], detail.views)
print(detail.location.town, detail.location.region)
print(detail.user.name, detail.user.type)
# Typed error handling for a missing listing.
try:
bad = client.doglistings.search(breed="akita", limit=1).first()
if bad:
bad.details.get()
except ListingNotFound as exc:
print(f"listing gone: {exc.slug}")
print("exercised: doglistings.search / details.get / ListingNotFound")
Search for dogs available for adoption on Pets4Homes. Supports keyword search, breed filtering, size filtering, and children-compatibility filtering. Returns paginated results sorted by date published. Size and children_compatible filters are applied client-side against listing descriptions.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| size | string | Desired dog size keyword (e.g. 'small', 'medium', 'large'). Filters by keyword match in the listing description. |
| breed | string | Breed slug to filter by (e.g. 'akita', 'labrador', 'mixed-breed'). Maps to the site's breed category URL segment. |
| query | string | Search keyword to filter listings by title/description. |
| children_compatible | boolean | If true, filters results for dogs whose description mentions children/child compatibility. |
{
"type": "object",
"fields": {
"page": "integer current page number",
"listings": "array of listing objects with id, title, slug, price, currency, location, breed, published_at, description_preview, image",
"total_pages": "integer total number of pages available",
"total_results": "integer total number of matching listings"
},
"sample": {
"data": {
"page": 1,
"listings": [
{
"id": "e2f3ab4f-0079-45cd-9da9-07611d331774",
"slug": "ityu6p1wk-bonded-brothers-small-breed-nottingham",
"breed": "pets.dogs.breed.mixedBreed",
"image": "https://assets.pets4homes.co.uk/originalImages/f6d52f96-921b-4bfc-89cd-279b96a05092/##NAME##.jpeg",
"price": 495,
"title": "Bonded brothers small breed",
"currency": "GBP",
"location": "Nottingham, England",
"published_at": "2026-06-08T23:14:32.205Z",
"description_preview": "Beautiful brothers Derek and Dustin, small breed 13 inch tall."
}
],
"total_pages": 27,
"total_results": 628
},
"status": "success"
}
}About the Dogs4homes API
Search Endpoint
The search_dogs endpoint accepts up to five optional parameters: query for keyword filtering, breed for breed-slug filtering (e.g. labrador, akita, mixed-breed), size for keyword-based size filtering (small, medium, large), children_compatible to surface dogs explicitly noted as child-friendly, and page for pagination. Each response includes total_results, total_pages, and a listings array. Each listing object carries id, title, slug, price, currency, location, breed, published_at, description_preview, and image.
Listing Detail Endpoint
The get_dog_details endpoint takes a single required slug parameter—available from search_dogs results—and returns the full listing record. Response fields include a UUID id, an attributes object covering breed, health status, neutered status, and relevant dates, an images array of URLs, a location object with town, region, and postcode, a user object with seller name, type, and charity flag, plus views, price, currency, title, and created_at timestamp.
Data Scope and Freshness
Listings reflect the public-facing state of Pets4Homes at query time. The breed parameter maps to the site's category URL segments, so values like golden-retriever or french-bulldog must match the site's slug conventions. The size filter operates on keyword matching within listing descriptions rather than a structured attribute, so results may vary by how individual sellers phrase their listings.
Pagination
The search_dogs endpoint returns total_pages and total_results alongside the current page number, allowing full result-set traversal by incrementing the page parameter across requests.
The Dogs4homes API is a managed, monitored endpoint for dogs4homes.co.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dogs4homes.co.uk changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official dogs4homes.co.uk API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a dog adoption aggregator filtered by breed slug and geographic region from the
locationfield. - Monitor new listings by polling
search_dogssorted bypublished_atand alerting on new entries. - Filter listings for families by combining the
children_compatibleflag with abreedfilter. - Enrich a pet charity database with seller
user.typeanduser.charityfields fromget_dog_details. - Track listing popularity over time using the
viewscount returned byget_dog_details. - Power a breed-specific adoption digest by iterating
search_dogswith different breed slugs and extractingdescription_previewandimagefields.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Pets4Homes have an official developer API?+
What does the `attributes` object in `get_dog_details` contain?+
attributes object is a key-value map that can include breed, health status, neutered status, and relevant dates associated with the listing. The exact keys present depend on what the seller filled in for that specific listing, so not all keys appear in every response.Does the `size` filter work the same as the `breed` filter?+
breed parameter maps to a structured breed category, while size works by matching the supplied keyword against listing descriptions. This means a listing for a 'small Labrador' might not appear in a size=small search if the seller didn't use that phrasing, so results may be incomplete compared to breed filtering.Can I retrieve cat or small animal listings from Pets4Homes through this API?+
search_dogs and get_dog_details. You can fork it on Parse and revise it to add endpoints targeting other animal categories on the site.Is seller contact information like phone number or email returned?+
user object in get_dog_details returns seller name, type, and charity status, but direct contact details such as phone numbers or email addresses are not exposed. You can fork it on Parse and revise it to add any additional seller fields if they become available in the listing data.