TL;DR
The Dog API (by Kinduff) provides high-quality dog images organized by breed and sub-breed. It covers over 100 breeds with sub-breeds (like "hound — afghan", "retriever — golden") and returns image URLs you can embed directly. Unlike the dog.ceo API which focuses purely on images, this Dog API also returns breed metadata including breed group, life span, temperament, and weight/height ranges.
Quick start: https://dogapi.dog/api/v1/breeds
No API key needed — just make a request!
How to Use This API
1. List All Dog Breeds with Details
https://dogapi.dog/api/v1/breeds
Returns all breeds with id, name, breed group, life span, temperament, weight (imperial/metric), and height.
2. Random Dog Image
https://dogapi.dog/api/v1/images/random
Get a single random dog image with breed info attached.
3. Get Multiple Random Images
https://dogapi.dog/api/v1/images/random?limit=5
Returns up to 5 random dog images with breed information in one request.
4. JavaScript — Breed Directory
async function listBreedsByGroup(groupName) {
const resp = await fetch('https://dogapi.dog/api/v1/breeds');
const { data: breeds } = await resp.json();
return breeds
.filter(b => b.attributes.breed_group === groupName)
.map(b => ({
name: b.attributes.name,
life: b.attributes.life_span,
temperament: b.attributes.temperament,
weight: b.attributes.weight.imperial
}));
}
async function showHerdingDogs() {
const dogs = await listBreedsByGroup('Herding');
console.log(`Found ${dogs.length} herding breeds`);
dogs.forEach(d => {
console.log(`${d.name} — Life: ${d.life}, Weight: ${d.weight} lbs`);
});
}
showHerdingDogs();
5. Python — Fetch Dog with Image
import requests
def random_dog_with_info():
resp = requests.get('https://dogapi.dog/api/v1/images/random')
data = resp.json()
dog = data['data'][0]
img_url = dog['attributes']['url']
breed = dog['relationships']['breeds']['data'][0]
breed_resp = requests.get(
f"https://dogapi.dog/api/v1/breeds/{breed['id']}"
)
breed_data = breed_resp.json()['data']['attributes']
print(f"Breed: {breed_data['name']}")
print(f"Group: {breed_data['breed_group']}")
print(f"Temperament: {breed_data['temperament']}")
print(f"Life span: {breed_data['life_span']}")
print(f"Image: {img_url}")
random_dog_with_info()
https://dogapi.dog/api/v1/images/random
Frequently Asked Questions
- How is this different from Dog CEO?
- Dog CEO (
dog.ceo) provides breed-organized image URLs but minimal metadata. This Dog API (dogapi.dog) includes breed attributes like temperament, life span, weight, height, and breed group — making it better for breed directory apps. - What breed groups are available?
- Standard AKC groups: Herding, Hound, Non-Sporting, Sporting, Terrier, Toy, Working, and Mixed/Unknown. Filter with
?filter[breed_group]=Herding. - Can I upload my own dog images?
- Yes, the API supports image uploads. POST to
/api/v1/images/uploadwith an image file. Check docs for details. - What image formats are returned?
- JPEG images primarily. The API returns URLs you can embed with an
<img>tag. - Are there usage limits?
- The API is free and open with reasonable rate limits for personal and hobby projects. For heavy use, contact the maintainer.
API Details
- API URL
https://dogapi.dog/api/v1- Documentation
- dogapi.dog/docs
- Category
- Animals
- Authentication
- Not Required
- Geographic Coverage
- Global
What You Can Build
- Dog breed encyclopedia with images, temperament, and lifespan
- "Which dog breed is right for me?" quiz app
- Random dog image widget for stress relief websites
- Breed comparison tool for potential pet owners
- Veterinary app showing breed-specific health data