Shelter Pet Finder - Adoptable Dogs, Cats and More avatar

Shelter Pet Finder - Adoptable Dogs, Cats and More

Pricing

from $2.00 / 1,000 animal results

Go to Apify Store
Shelter Pet Finder - Adoptable Dogs, Cats and More

Shelter Pet Finder - Adoptable Dogs, Cats and More

Adoptable dogs, cats, rabbits and more near any location, with photos, breed, age, sex, size, kids/dogs/cats compatibility and shelter contact. UK, Ireland, France, Germany, Italy, Spain, Taiwan, Japan and Singapore with no keys; US, Canada and Korea via free API keys (beta).

Pricing

from $2.00 / 1,000 animal results

Rating

0.0

(0)

Developer

Marielise

Marielise

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Shelter Pet Finder

Find adoptable shelter animals near a location with everything a matching app needs: photos, breed, age, sex, size, whether the animal can live with children, dogs or cats, a full description, the listing URL, and the shelter's contact details. Dogs and cats by default; rabbits, guinea pigs, hamsters, ferrets, birds, reptiles, fish, horses and farm animals where a source lists them. Optionally add the shelters and rescues around that location too.

Built for people looking for their next pet and for developers building adoption search, matchmaking or rescue-support products. Covers the UK, Ireland, France, Germany, Italy, Spain, Portugal, Taiwan, Japan and Singapore with no keys, plus South Korea, the US and Canada with free API keys.

What you get

Each animal is one dataset item with a stable id (source:externalId), so you can re-run the actor and diff results to spot new arrivals, changed listings (contentHash) and animals that have gone (missing from the next run).

Field groupFields
Identityid, externalId, source, species, name, url, status (available, reserved), listedAt
Looksbreed, breedPrimary, breedSecondary, isMixed, size, sex, coat, colors
AgeageText, ageMonths, ageBucket (puppy, young, adult, senior)
Home fitgoodWithKids, goodWithKidsMinAge, goodWithDogs, goodWithCats, houseTrained, specialNeeds, energyLevel, temperamentTags
Healthneutered, vaccinated
Mediaimages (full-size URLs, primary first), primaryImage, videos
SheltershelterId, shelterName, shelterUrl, shelterPhone, shelterEmail, location, country, coordinates, distanceKm
MoneyadoptionFee
BookkeepingcontentHash, scrapedAt

Animal records carry recordType: "animal" and a normalised species (dog, cat, rabbit, small-furry, bird, reptile, fish, horse, farm, other). Shelter records share the same shape with recordType: "shelter" and carry googleMapsRating, googleMapsReviews, needsVolunteers, needsDonations and urgencySignals.

Sources and coverage

RegionSourceSpeciesNeedsWhat it returns
UKDogs TrustdogsnothingAll dogs nationally via the site's search API, filtered to centres within your radius. 800x600 photos, compatibility by child age band, reserved flag.
UKBatterseadogs, catsnothingEvery animal at London, Old Windsor and Brands Hatch with sex, size, living-with flags, photos, full write-up.
UKRSPCAdogs, cats, rabbits, small furries, birds, reptiles, horses, farmnothingThe 50 nearest animals per species from the RSPCA pet search, with branch contact, colour, photos and description.
IrelandDogs Trust IrelanddogsnothingSame API as the UK site.
France, Germany, Italy, Spain, UKWamizdogs, catsnothingShelter and association listings through Wamiz's JSON search API (about 4,400 dogs and 4,000 cats in France, 3,700 dogs in Germany). Photos, sex, age, size, neutered, vaccinated, fee, shelter address and coordinates.
FranceSeconde Chancedogs, cats, rabbits, small furries, horses, farm, birds, reptiles, fishnothingFrance's largest refuge aggregator (about 12,000 dogs alone), searched by the departments around your location. Exact birth date, breed, sex, size, coat, gallery, full write-up and the refuge's address, email and phone.
GermanyTierheimheldendogs, cats, rabbits, small furries, birds, reptiles, horses, farm, fishnothingAnimals from German shelters and rescues within up to 100 km of a postcode. Birth date, breed, size, sex, neutered, house-trained, good with children, dogs and cats, gallery, full write-up.
PortugalPawseumdogs, catsnothingDogs and cats from Portuguese shelters and municipal kennels (about 760 available across 40+ kennels). Birth date, breed, size, sex, colours, temperament tags, neutered, vaccinated, kennel phone and email. Only kennel listings are read, never private owners.
TaiwanMOA open datadogs, cats, othernothingEvery animal in a public shelter (about 8,400), with sex, size, age band, colour, neutered, vaccinated, photo, shelter address and phone. Shelter coordinates are geocoded and cached.
Japanpet-home.jpdogs, cats, small furries, birds, reptiles, fishnothing (browser)Listings open to adopters in the searched prefecture: photos, breed, sex, age, size, vaccination, neutering, fee, rescue group name and full write-up.
SingaporeSPCA Singaporedogs, cats, rabbits, small furries, reptiles, othernothingEverything on spca.org.sg with breed, sex, colour, age, sterilised flag, personality, training and gallery.
South Koreaanimal.go.kr open APIdogs, cats, otherfree data.go.kr key (beta)Every animal in care nationally with up to 8 photos, breed, sex, age, weight, neutered, colour, shelter address and phone.
US, Canada, MexicoPetfinder API8 typesfree key and secret (beta)Adoptable animals within the radius with photos, attributes, environment flags, tags and organisation contact.
US, CanadaRescueGroups API8 typesfree key (beta)Animals with pictures within the radius, including energy level, house-training and fee.
anywhereGoogle Maps (optional)sheltersbilled by that actor, about $0.004 per placeShelters, rescues and animal-protection associations near the location. The fallback for countries without a listing platform (Netherlands, Poland, Nordics, most of South and Southeast Asia).

Sources that do not cover the searched country are skipped automatically and reported in RUN_SUMMARY.

Sources marked beta are written against the official APIs but have not yet been verified with a live key. If one misbehaves, please open an issue.

Input

{
"location": "London",
"species": ["dog", "cat"],
"radiusKm": 50,
"searchMode": "adopt",
"goodWithKids": false,
"includeReserved": false,
"fetchDetails": true,
"maxResults": 50
}
  • species: defaults to dogs and cats. Leave empty for every species a source offers (rabbit, small-furry, bird, reptile, fish, horse, farm, other). Results are interleaved so one species cannot fill maxResults.
  • searchMode: adopt (animals only, default), support (shelters only) or both.
  • includeReserved: reserved and adoption-pending animals are dropped by default so results stay actionable.
  • fetchDetails: opens each animal's page for the full description and all photos. Turn off for a faster, thinner crawl.
  • enableGoogleMaps + googleMapsMaxPlaces: shelter discovery for support or both mode. Off by default because that actor has its own pricing.
  • petfinderApiKey, petfinderApiSecret, rescueGroupsApiKey, koreaApiKey: stored as secrets, only used for those sources.
  • exportStoreName + exportKey: also save the results to a named key-value store under a fixed key, so an app can always read the latest list from one URL (https://api.apify.com/v2/key-value-stores/<store>/records/<key>). Pair with a schedule for a self-refreshing feed.

Output

  • Dataset: one item per animal or shelter, sorted by distance. Views: Nearby animals and Shelters.
  • Key-value store: RUN_SUMMARY (per-source status, counts and warnings), OUTPUT.json, adoption_results.csv, REPORT.md.

A run always succeeds even if one source is down; check RUN_SUMMARY.sourceOutcomes for blocked, failed or empty sources.

Example animal record (trimmed):

{
"recordType": "animal",
"id": "dogstrust:3661543",
"source": "dogstrust",
"species": "dog",
"name": "Hallie",
"url": "https://www.dogstrust.org.uk/rehoming/dogs/chihuahua-smooth-coat/3661543",
"status": "available",
"listedAt": "2026-09-20T16:58:12.000Z",
"breed": "Chihuahua (Smooth Coat)",
"isMixed": false,
"ageText": "7 years, 6 months",
"ageMonths": 90,
"ageBucket": "adult",
"size": "small",
"sex": "female",
"specialNeeds": true,
"goodWithKids": true,
"goodWithKidsMinAge": "primary",
"goodWithDogs": false,
"goodWithCats": false,
"images": ["https://www.dogstrust.org.uk/images/800x600/dogs/3661543/068Tf00000fh587IAA.jpg"],
"shelterName": "Dogs Trust Harefield West London",
"shelterPhone": "0303 003 0000",
"coordinates": { "lat": 51.58442, "lng": -0.47125 },
"distanceKm": 25.3
}

Pricing

Pay per event. You pay only for what the run does, and platform usage is included.

EventPriceWhen
Actor start$0.02 per GB of memory ($0.08 at the default 4 GB)Once per run
Source searched$0.02Each source that actually ran (blocked, failed or skipped sources are free)
Animal result$0.002 ($2 per 1,000)Each adoptable animal saved to the dataset
Shelter result$0.005Each shelter saved to the dataset (Google Maps discovery)

Examples:

  • London, dogs and cats, 50 results from 4 UK sources (the default input): about $0.26. With 300 results: about $0.76.
  • Paris, 100 results from Wamiz: about $0.30.

Set Max total charge on the run to cap spend. The actor stops starting new sources and saves only the records the cap allows. Google Maps discovery also starts a separate compass/crawler-google-places run, which has its own pricing.

Keeping a feed fresh

  • Re-run per region on a schedule (UK sources are cheap plain HTTP; every few hours is fine).
  • Check schemaVersion (currently 1) before ingesting; it only changes when the record shape breaks.
  • Key your database on id. An animal present in the previous run and missing from the current one has most likely been rehomed.
  • Compare contentHash to detect edited listings without diffing every field.
  • status: "reserved" animals are still listed by the shelter but not available; include them with includeReserved if you want to show "reserved" badges.

Notes on sources

  • pet-home.jp lists animals by the prefecture they can be adopted into, so the radius filter is not applied there; distanceKm still tells you how far the animal currently is.
  • RSPCA pins one species per session, so each species is searched in its own browser context. Requesting all ten takes roughly three minutes.
  • Taiwan and Korea listings have no per-animal page; url points at the shelter search and externalId is the animal's registry number.
  • The first Taiwan or Korea run geocodes every shelter address (about one per second); later runs reuse the dog-shelter-finder-geocache store.
  • Petfinder's website blocks automated access; this actor uses the official API only.
  • Adopt-a-Pet is not scraped (geo-blocked and against its terms); RescueGroups exposes much of the same inventory through a free API.
  • Placeholder images ("no image available") are dropped, so an empty images array means the shelter published no photo.
  • Dogs Trust, Battersea and RSPCA are charities. The actor keeps request rates low and only reads public listing pages.

Use cases

  • Adoption and matching apps: a location-aware feed of adoptable animals with photos and compatibility flags, keyed for daily sync.
  • Rescue support tools: find shelters near a place and which of them ask for volunteers or donations (searchMode: "support").
  • Research and reporting: shelter populations by species, age and region over time.
  • Alerts: schedule a run and notify adopters when a new animal matching their filters appears.

FAQ

Why did my run return a status record instead of animals? When no animal or shelter could be saved, the run stores one recordType: "status" item per source saying what happened (blocked, failed, skipped or empty). Status records are never charged.

Why is a source missing from my results? Each source covers specific countries. The rest are skipped for your location, and are listed with a reason in RUN_SUMMARY in the key-value store.

Can I get every animal in a country? Set a large radiusKm (up to 500) and a high maxResults. For a full national feed, run once per region on a schedule and key your database on id.

How fresh is the data? Every run reads the live listings. Animals are rehomed quickly, so re-run at least daily for a production feed.

How do I keep costs down? Lower maxResults, pick only the sources you need, and set a Max total charge on the run.

  • Photos and descriptions belong to the shelters and posters. The actor returns image URLs only and never rehosts images. Link back to the listing (url) when you display an animal.
  • Personal data. The actor collects organisation contact details, not details about individuals. pet-home.jp poster names are kept only when they read as an organisation. Google review text is reduced to tags such as overcrowded.
  • Open data. Taiwan's government open data is published under the Open Government Data License 1.0, which requires attribution. Korean data comes from the data.go.kr API under that portal's terms of use.
  • Pawseum publishes a documented public API; its robots.txt nonetheless disallows /api/. The actor reads kennel rosters only, one request per nearby kennel.
  • Seconde Chance asks crawlers for one request per second; the actor follows that.
  • pet-home.jp is protected by an anti-bot check that the actor passes with a real browser. Review that site's terms before using its data commercially.
  • Your responsibility. You are responsible for complying with each source's terms of use and with privacy law (for example GDPR) in how you store and use the results.