Dog API

Animals API · Dog breed images · Hundreds of breeds · No auth

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()
Try random dog image: 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/upload with 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