A robust data extraction tool that collects detailed adoptable pet listings from PetFinder in a structured, analysis-ready format. It helps teams track adoption availability, study trends, and build data-driven insights around animal welfare using clean, reliable pet adoption data.
Created by Bitbash, built to showcase our approach to Scraping and Automation!
If you are looking for petfinder-pet-listings-scraper you've just found your team — Let’s Chat. 👆👆
This project extracts comprehensive information about adoptable pets listed on PetFinder, including animals, shelters, and locations. It solves the problem of manually browsing and aggregating scattered adoption listings. It’s built for developers, researchers, analysts, and organizations working with pet adoption and animal welfare data.
- Collects structured pet listings across multiple locations and filters
- Captures rich metadata for pets, shelters, and geography
- Outputs analysis-ready datasets suitable for research or monitoring
- Handles pagination and large result sets efficiently
| Feature | Description |
|---|---|
| Custom search URLs | Scrape listings from any PetFinder search URL with filters applied. |
| Detailed pet profiles | Extracts breed, age, size, sex, status, and publish date. |
| Location intelligence | Includes full address data with latitude and longitude. |
| Media extraction | Collects primary and additional photo URLs per pet. |
| Organization data | Captures shelter names, IDs, and contact details. |
| Scalable pagination | Automatically processes multi-page search results. |
| Proxy support | Improves stability and success rate for large runs. |
| Field Name | Field Description |
|---|---|
| petId | Unique identifier of the pet listing. |
| url | Direct link to the pet’s public profile. |
| type | Animal type such as dog or cat. |
| breed | Primary breed and mixed-breed indicators. |
| basicInfo | Name, age, sex, size, status, and publish date. |
| photos | Primary image and full image gallery URLs. |
| location | Address, city, state, postal code, and coordinates. |
| organization | Shelter or rescue name, ID, and contact details. |
[
{
"searchUrl": "https://www.petfinder.com/search/dogs-for-adoption/us/ca/los-angeles/",
"petId": 75181194,
"url": "https://www.petfinder.com/dog/rocky-75181194/",
"type": "Dog",
"breed": {
"primary": "Pit Bull Terrier",
"isMixed": false,
"label": "Pit Bull Terrier"
},
"basicInfo": {
"name": "ROCKY",
"age": "Young",
"sex": "Male",
"size": "Large",
"status": "adoptable",
"publishedAt": "2025-02-14T08:28:30+00:00",
"organizationId": "A2183062"
},
"photos": {
"primary": "https://dl5zpyw5k3jeb.cloudfront.net/photos/pets/75181194/1/",
"all": [
"https://dl5zpyw5k3jeb.cloudfront.net/photos/pets/75181194/1/"
]
},
"location": {
"address": "3201 Lacy Street",
"city": "Los Angeles",
"state": "CA",
"postalCode": "90031",
"coordinates": {
"latitude": 34.0835506,
"longitude": -118.2188081
}
},
"organization": {
"name": "City of Los Angeles North Central Animal Shelter",
"displayId": "CA763",
"contact": "(888) 452-7381"
}
}
]
PetFinder Pet Listings Scraper/
├── src/
│ ├── runner.py
│ ├── extractors/
│ │ ├── petfinder_parser.py
│ │ └── location_utils.py
│ ├── outputs/
│ │ ├── exporters.py
│ │ └── schema.py
│ └── config/
│ └── settings.example.json
├── data/
│ ├── inputs.sample.json
│ └── sample_output.json
├── requirements.txt
└── README.md
- Animal welfare researchers use it to analyze adoption trends, so they can study breed availability and regional demand.
- Rescue organizations use it to monitor listings, so they can benchmark visibility and adoption velocity.
- Data analysts use it to build dashboards, so they can track shelter activity over time.
- Developers use it to power pet adoption apps, so users get up-to-date listings automatically.
Can I limit how many pet listings are collected? Yes, the scraper supports a maximum item limit to control dataset size and runtime.
Does it support different animal types and locations? It works with any PetFinder search URL, allowing filtering by animal type, size, age, and geography.
Is location data included for mapping and analysis? Yes, each listing includes full address details and geographic coordinates when available.
What output formats are supported? The extracted data is structured for easy export into formats like JSON, CSV, or spreadsheets.
Primary Metric: Processes hundreds of listings per minute depending on filters and network conditions.
Reliability Metric: Maintains a high success rate with automatic pagination and retry handling.
Efficiency Metric: Optimized requests minimize redundant page loads and unnecessary processing.
Quality Metric: Delivers high data completeness across pet profiles, media, and shelter metadata.
